Sql-Server
SSIS 數據庫源錯誤地導入為 BLOB
朋友們,
我是 SSIS(Microsoft SQL Server 集成服務)的初學者。雖然我有使用其他語言(Python、MATLAB、R 等)編碼的經驗,但我從未體驗過一種數據類型讓我如此困惑的語言。
我已將數據上傳到使用數據流對象創建的數據庫中。SSIS中列的數據類型是Unicode字元串
$$ DT_WSTR $$並且數據庫中列的數據類型是ntext。 將數據上傳到數據庫後,我在新的數據流對像中從該數據庫中檢索它。但是,當它將數據庫中的數據載入到 SSIS 中時,它現在是一個二進制大對象塊 (BLOB)。我幾乎不可能對列進行任何類型的轉換,並將其作為 BLOB 對象。
有沒有辦法將 BLOB 對象轉換為 DT_WSTR?還是一個可用的數據類型?
任何幫助表示讚賞!
您讓 SSIS 創建的表定義將列定義為 ntext。NTEXT,除了被棄用之外,是一種大型對像類型,因此當您從該源提取數據時,SSIS 將簡單地將其稱為 BLOB 是合理的,因為對於數據流引擎來說它為什麼很大並不重要,它就是這樣。
您可以將表修復為非 LOB 類型,然後更新載入程序程序以解決它。
大約
ALTER TABLE dbo.MyTable ALTER COLUMN Foo nvarchar(4000);
或者,您可以在從表中提取數據以使其成為“正常”字元串時執行顯式轉換。
大約
SELECT CAST(T.Foo AS nvarchar(4000)) AS Foo FROM dbo.MyTable AS T;