我准备格式文件基于This article批量插入不承认行终止
样本数据的导入文本文件合格导入到SQL服务器:
"1000000"|"1100000"|"2017-02-26 00:00:00"|"CAT1"|"Item from CAT1"
"1000001"|"1100000"|"2017-02-26 00:00:01"|"CAT2"|"Item from CAT2"
"1000002"|"1100001"|"2017-02-26 00:01:02"|"CAT2"|"Item from CAT2"
"1000003"|"1100002"|"2017-02-26 01:02:03"|"CAT3"|"Item from CAT3"
我的格式文件:
13.0
6
1 SQLCHAR 0 0 "\"" 0 FIRST_QUOTE SQL_Latin1_General_CP1_CI_AS
2 SQLINT 0 4 "\"|\"" 1 transaction_id ""
3 SQLINT 1 4 "\"|\"" 2 user_id ""
4 SQLDATETIME 0 8 "\"|\"" 3 create_date ""
5 SQLCHAR 2 10 "\"|\"" 4 category SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 2 50 "\"\r\n" 5 item SQL_Latin1_General_CP1_CI_AS
导致:
批量加载失败。行1,列6的数据文件中的列太长。验证字段终止符和行终止符是否已正确指定。
我相当肯定的是,文件中包含\ r \ n(经过与十六进制编辑器显示0X0D,0X0A),但忽略文本预选赛和格式的文件,我是只能与
Bulk insert <table_name> from '\\path\to\file' with (fieldterminator='|', rowterminator='\n')
手动导入
只是使用'\ n',而不是'\ r \ n'。前者是'回车,换行'(aka,CRLF)。后者是'回车,回车,换行'(CRCRLF)。不知道是否真的能解决这个问题。 (仅供参考,'x0dx0a'是CRLF,所以也许你的报告文件格式不正确,实际的文件格式不正确?) – ps2goat
对不起,如果你已经检查过了,但是有可能'item'的长度超过50? – SqlZim
@SqlZim是的,我通过向导导入它,但它很好。另外我相当确定源字段在另一个数据库中也是varchar(50) – JagdCrab