【发布时间】:2015-12-30 11:15:23
【问题描述】:
我正在尝试批量插入 csv 文件。 (所有 Varchar 字段)。
该文件包含如下行:
"10449";"135";"Programming";"2";"020";" ";"0";"4";"0";"4";"20151229";"20151228"
并以特定行结束,以便能够检查我们是否导入了所有数据:
"DONE";"29/12/15";"12:15:03"
我生成了一个带有bcp 的非XML 格式文件,如下所示:
10.0
12
1 SQLCHAR 0 50 ";" 1 Budgetnr Latin1_General_CI_AS
2 SQLCHAR 0 50 ";" 2 CustID Latin1_General_CI_AS
3 SQLCHAR 0 100 ";" 3 Subject Latin1_General_CI_AS
4 SQLCHAR 0 50 ";" 4 BNR2 Latin1_General_CI_AS
5 SQLCHAR 0 50 ";" 5 BNR3 Latin1_General_CI_AS
6 SQLCHAR 0 50 ";" 6 Type Latin1_General_CI_AS
7 SQLCHAR 0 50 ";" 7 BudgetX Latin1_General_CI_AS
8 SQLCHAR 0 50 ";" 8 BudgetY Latin1_General_CI_AS
9 SQLCHAR 0 50 ";" 9 TimeSpentX Latin1_General_CI_AS
10 SQLCHAR 0 50 ";" 10 TimeSpentY Latin1_General_CI_AS
11 SQLCHAR 0 50 ";" 11 DateStrX Latin1_General_CI_AS
12 SQLCHAR 0 50 "\r\n" 12 DateStrY Latin1_General_CI_AS
使用批量插入时with (FORMATFILE = 'C:\Temp\formatFile2.fmt', firstrow = 3, rows_per_batch = 5000 )
我收到以下错误:
批量加载:在数据文件中遇到了意外的文件结尾。
我知道这是因为批量插入需要更多列但找不到任何列。
如何告诉 MsSQL 忽略任何与格式不匹配的行?
(我已经研究了其他选项,例如OPENROWSET,以便在导入之前计算行数,但我不允许更改公司服务器上的安全设置,此外,这只是做如此简单的事情的丑陋解决方案)。
提前致谢!
【问题讨论】:
标签: sql-server tsql