使用OPENROWSET(BULK...)
是要走的路,假設您不能預先過濾文件。
INSERT INTO table1 (col1, col2, ..., colN)
SELECT col1, col2, ..., colN
FROM OPENROWSET(BULK '<data_file_name>.txt', FORMATFILE = '<format_file_name>.xml') AS a
WHERE ...
作爲一個附帶的好處是,你可以選擇使用功能和查找表文件轉換數據,並添加連接到其他表進行過濾,但你必須牢記的性能影響。
INSERT INTO table1 (col1, col2, ..., colN)
SELECT a.col1, a.col2, ..., a.colN
FROM OPENROWSET(BULK '<data_file_name>.txt', FORMATFILE = '<format_file_name>.xml') AS a
INNER JOIN ...
ON ...
LEFT JOIN ...
ON ...
WHERE ...
見Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...)
注意,使用OPENROWSET(BULK...)
會要求您創建一個XML或非XML格式的格式文件。這兩種文件格式都可能很難用手寫入,並且容易出錯。如果您可以從生成的文件開始並進行必要的修改,那麼您的工作將變得更加輕鬆。使用bcp
程序生成格式文件。首選XML格式(-x
參數)。
bcp <table_or_view> format nul -f<format_file_name>.xml -x
見Create a Format File
@suchit您的編輯失敗。當然,這使得代碼變得很漂亮,但是把英文放在了頂部,並且把它弄糟了。 「沒有找到任何可以使用的東西......」嗯? 'Builter',那是什麼? – zipzit
如何批量插入並刪除不需要的行 – BICube
在導入之前是否可以過濾行?要麼使用腳本語言,要麼使用type + find? –