Sql-Server

為什麼 SQL Server uniqueidentifier 值在轉換為 Db2 時看起來不同?

  • July 11, 2019

我目前正在嘗試將 SQL Server 數據庫轉換為 DB2。我正在使用 IBM Data Studio 的數據轉換工作台 (DCW)。我遇到的問題是 DCW 似乎無法正確地將數據從 SQL Server 提取到平面文件中。uniqueidentifierDCW 未正確提取我的數據庫(在 SQL Server 中)中具有數據類型的所有列。任何屬於該uniqueidentifier類型的數據都被寫入隨機符號和字元。可能是什麼原因?

我感覺到你的痛苦。我使用過 SQL Server 和 DB2。我承認恕我直言,數據提取和導入工具在 SQL Server 中的使用不像在 DB2 中那樣簡單或直接。

如果您希望堅持使用數據庫工具,我建議您:創建查詢以提取數據。使用 CONCAT 用字元(不會與您的數據衝突的字元)包圍每個欄位。希望您沒有數百萬行。然後執行查詢並將結果複製並粘貼到 Notepad++ 之類的文件中,並將其保存為 CSV 文件。您現在可以使用 db2import 更簡潔、更輕鬆地提取數據。笨重,是的。但它是我發現的最好的。我還沒有找到一種簡單的方法來使用 bcp 或 SSIS 來完成 db2import、db2load 和 db2export 所做的事情……

無論如何,如果這不符合您的喜好,或者如果數據集太大,您可能希望考慮使用不同的工具。有 ETL 工具(也許你有一個商店?)來移動數據。Microsoft 的 SQL Server Integration Services (SSIS) 或 IBM 的 InfoSphere DataStage 只是其中的兩個範例。(我並沒有真正使用過 SSIS,我嘗試過的很少,與 db2export 相比,它對我來說並不簡單或直覺。但也許這只是我,我需要進一步的接觸/培訓。)

另一種工具(我不僅是 DBA,而且還是 Java 開發人員,我可以碰巧利用這個工具)是利用現有的 API,例如純 JDBC 與 Apache POI 或 Apache Commons-CSV 來獲取提取的數據簡單的格式。POI 可讓您提取到 Excel 格式(.xls 和 .xlsx),而 Commons-CSV 顯然可以讓您提取到 CSV 格式。再一次,當您擁有 CSV 格式的數據時,很容易將數據導入/載入到 DB2 中。

這將有助於解決一些數據問題。您仍然可能需要抽查數據以確保您沒有任何程式碼頁轉換正在進行。如果是這樣,您可能需要在提取過程中處理它。

我意識到其他人會提到 bcp 或 SSIS。我只能說我經歷過的。但希望我已經給了你一些其他的選擇來考慮。

根據評論建構的答案:

您對平面文件有什麼期望?uniqueidentifier 是一個 16 字節的 GUID,因此在其本機格式中它只是一系列原始字節。(這將映射到 DB2 中的 CHAR(16) FOR BIT DATA)。– Ian Bjorhovde 2016 年 1 月 20 日 20:32

如前所述,GUID 只是一個 16 字節的值(如果需要,可以將其視為 128 位數字)。SQL Server 向您展示的是該數字的簡單通用表示,而 DB2 向您展示的是那些 16 字節的 ASCII 字元。如果您在查詢列時使用 HEX() 函式,您可能會看到更接近 SQL Server 表示的內容(但沒有不屬於列數據一部分的破折號;只是 SQL Server 使用的表示)– Dave Jones Jan 2016 年 21 月 21 日 12:22

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