“列太长”错误与BULK INSERT(“Column is too long” error wit

2019-07-18 06:58发布

我想从一个CSV file--运行以下命令来批量插入数据

 BULK INSERT TestDB.dbo.patent
 FROM 'C:\1patents.csv'
 WITH (FIRSTROW = 1,  FIELDTERMINATOR = '^', ROWTERMINATOR='\n');

我得到的错误是this--

消息4866,级别16,状态1,第1行
大容量加载失败。 列在第1行,第6列中的数据文件太长。
验证字段终止符和行终止指定正确。
消息7399,级别16,状态1,第1行
OLE DB提供程序“BULK”链接服务器“(空)”报告错误。 提供程序未给出有关错误的任何信息。
消息7330,级别16,状态2,行1
无法获取来自OLE DB提供程序“BULK”链接服务器“(空)”一行。

现在,这是第一row--数据

 00000001^^18360713^295^4^0

和在表中的最后一个字段(对应于100。上述= 0的数据的第6列)的类型是“INT”的。

我在做什么错在这里? 为什么会出现上述错误?

Answer 1:

我从甲骨文/ Unix下了提取。 我换成\r\n通过ROWTERMINATOR = '0x0a' ,它为我工作。
非常感谢 !



Answer 2:

像上面说,我有同样的问题CSV文件导入到SQL Server。 我用ROWTERMINATOR = '\n'和我还试图用'\r\n''\r' 。 他们没有工作。

但是,当使用ROWTERMINATOR = '0x0a'没有问题加载表。

我不知道“为什么?” 这背后,希望别人可以通过它揭示。



Answer 3:

除非文件来源是Unix的,很可能是该文件的行终止是真的

\ r \ n

无论是使用十六进制编辑器来验证文件的终止,或者只是尝试,作为行终止。



Answer 4:

我面对类似的问题,才知道,除非该文件是UNIX类型\ r \ n是罚款。

当您生成格式文件(.FMT或.xml),左注意到第三列。 其称为最小长度立柱。 有时,SQL Server的默认值是2,虽然你不提它的创建脚本。 更改值为0。 有时你可能需要允许空也,故改变为零,它现在应该工作



文章来源: “Column is too long” error with BULK INSERT