Ssis
SSIS 包 - 將數據導出到平面文件時出錯 - 字元無效
我有一個 SSIS 包,我將數據從第 3 方源提取到 CSV 文件中。
我收到此錯誤:
“數據轉換失敗。“描述”列的數據轉換返回狀態值 4 和狀態文本“文本被截斷或目標程式碼頁中的一個或多個字元不匹配。”。
無法複製或轉換“描述”列的平面文件數據。
SSIS 錯誤程式碼 DTS_E_PROCESSINPUTFAILED。處理輸入“平面文件目標輸入”(20304) 時,組件“平面文件目標”(20300) 上的 ProcessInput 方法失敗,錯誤程式碼為 0xC02020A0。已辨識的組件從 ProcessInput 方法返回錯誤。該錯誤是特定於組件的,但該錯誤是致命的,將導致數據流任務停止執行。在此之前可能會發布錯誤消息,其中包含有關失敗的更多資訊。”
似乎有一個無效字元導致此問題…
我嘗試使用此程式碼將其刪除,但仍然是一個問題…
您必須通過呼叫它來處理 unicode 替換字元:
Row.Description = Row.Description.Replace(NCHAR(65533), "a")
編輯:
我很抱歉,因為我第一次給了你一個偽 SQL Server 解決方案,但是通過一些額外的研究了解到 SSIS 的行為有點不同。我正在連結提供多種解決方案的來源,答案將包括第一個。似乎您可以添加一個派生列組件,該組件允許您添加一個新列(例如
strDescription
,使用 Type Cast 運算符 DT_STR 從表中將 unicode 轉換為字元串。然後您應該能夠在適當的位置使用這個派生列CSV 目標中的原始列。來源希望有幫助!
在“數據流”中的“數據轉換轉換編輯器”中,我必須將列轉換為字元串
$$ DT_STR $$並將錯誤和截斷設置為“忽略失敗”。