Migration
導入不同欄位格式的外部數據
我在 Excel 中有如下源文件:
項目——-參考—描述
-400020–20045——-尺子 60cms
8900032–20012——-橡皮擦 45gr
注意:因為我可以在這裡添加很多空格,所以破折號“-”表示原始文件上的一個空格 Item 400020 在源文件的 4 之前帶有一個空格。
以下文件是以正確格式導出到我們的數據庫的預期文件
項目——–參考—描述
0400020–0020045–
尺子 60cms 8900032–0020012–橡皮擦 45gr
看來您需要先將excel表格中的數字轉換為字元,然後調整數據(空格)。導出為 CSV,然後導入數據庫。我想您在表中有 varchar 數據類型
Item
和Reference
列。
使用 Excel 的歷史使我確信不應依賴 Excel 格式。事實上,它很難即時影響。
假設 Microsoft SQL Server,您可以使用連結伺服器查詢從 Excel 電子表格中讀取數據,或者您可以將數據載入到臨時表中。如:
CREATE TABLE dbo.StagingExcel (Item CHAR(7), Reference CHAR(7), Description VARCHAR(50));
將數據載入到
StagingExcel
表中,然後將格式正確的數據傳輸到目標表。例如INSERT INTO dbo.YourTargetTable (Item, Reference, Description) SELECT RIGHT(REPLICATE('0',7) + Item,7), RIGHT(REPLICATE('0',7) + Reference,7), Description FROM dbo.StagingExcel -- (or the Excel linked server)
**編輯:**我對 Excel 格式的評論只是你還必須控制 Excel 列。如果 Excel 電子表格全部定義為文本列,則結果是可預測的。
AutoFormat
在下面的三列中,我在和列中鍵入了相同的字元串Text
,但看看它們的顯示方式有何不同。然後我將值複製AutoFormat
到AutoFormatToText
列中並獲得了AutoFormat
值,但證明為Text
.**AutoFormat Text AutoFormatToText** 12/21/1934 12/21/34 12/21/1934 12345 12345 12345 123 000123 123
您的評論似乎暗示前兩列組合成一個鍵值。假設格式是兩個 0 對齊的 7 個字元列變成一個 14 個字元的列,您只需連接兩列。片段:
... RIGHT(REPLICATE('0',7) + Item,7) + RIGHT(REPLICATE('0',7) + Reference,7), ...