Ssis
將非 Unicode 字元串轉換為 Unicode 字元串 SSIS
我正在創建一個包,我將在其中將數據庫中的數據導出到一個空的 excel 文件中。當我只添加源組件和目標組件並執行包時,我收到一個轉換錯誤,指出輸出列和列“A”無法在 unicode 和非 unicode 字元串數據類型之間轉換。
為了解決這個問題,我添加了一個數據轉換組件並將所有列轉換為
“Unicode 字元串
$$ DT_WSTR $$” 我不再收到錯誤。唯一的問題是我有大約 50 列,我必須一個一個地去選擇“Unicode 字元串
$$ DT_WSTR $$" 從下拉列表中。然後我必須進入目標組件並將新轉換的列映射到我的 excel 文件。 我的問題是,如果其他人遇到過這種情況,是否有更好更有效的方法來避免必須進行所有手動數據類型轉換?必須一一轉換和映射所有列似乎並不實際,尤其是在您有大量行的情況下。
我知道 excel 文件不是導入和導出數據的最佳方式,但它是這種特殊情況下所需要的。
我可能會尋找一種僅導出到平面文本文件的方法,然後嘗試將其轉換為 excel 作為包中的最後一步。我希望這不會觸發相同的 unicode / nonunicode 轉換錯誤。
作為 RDC 的替代方案,我將跳過轉換 SSIS 中的數據類型,並在我的源查詢中將它們顯式轉換為 nvarchar。
用法
在您的源查詢中(並且您正在使用源查詢而不是簡單地選擇下拉列表中的表),明確地將事物轉換為適當的 n(var)char 長度。
代替
SELECT E.BusinessEntityID , E.NationalIDNumber , E.LoginID , E.JobTitle , E.BirthDate , E.MaritalStatus , E.Gender FROM HumanResources.Employee AS E
使用查詢,例如
SELECT CAST(E.BusinessEntityID AS nvarchar(10)) AS BusinessEntityID , CAST(E.NationalIDNumber AS nvarchar(15)) AS NationalIDNumber , CAST(E.LoginID AS nvarchar(256)) AS LoginID , CAST(E.JobTitle AS nvarchar(50)) AS JobTitle , CAST(E.BirthDate AS nvarchar(10)) AS BirthDate , CAST(E.MaritalStatus AS nchar(1)) AS MaritalStatus , CAST(E.Gender AS nchar(1)) AS Gender FROM HumanResources.Employee AS E
AdventureWorks 的精明學生會認識到數據已經是一種
n(var)char
類型,但這只是為了展示這個概念。好處
- 使用的記憶體更少。目前,您將使用
Data Conversion Component
in SSIS分配和儲存“相同”數據的兩個副本- 沒有RSI。無需點擊 N 次並在他們提供的糟糕的小編輯器中指定所有這些資訊。我將使用針對 dmv/information_schema 的查詢來進一步自動生成“Excel 就緒”表導出。
- 沒有自定義組件安裝。我曾在安裝開源被禁止的地方工作過。安裝第三方應用程序還需要延遲維護成本,因為現在“每個人”都需要安裝相同的應用程序來維護您的程式碼*,並且它需要安裝在伺服器上,並且infosec 需要仔細檢查程序集以確保它們是有效的我們需要比你高的*無數人的簽字…