Ssis

SSIS 包 - 將數據導出到平面文件時出錯 - 字元無效

  • October 2, 2019

我有一個 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 $$並將錯誤和截斷設置為“忽略失敗”。 在此處輸入圖像描述

引用自:https://dba.stackexchange.com/questions/104492