使用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? –