Sql server &引用;“列太长”;批量插入错误
我试图运行以下命令从CSV文件批量插入数据-- 我得到的错误是-- Msg 4866,第16级,状态1,第1行Sql server &引用;“列太长”;批量插入错误,sql-server,sql-server-2008,bulkinsert,Sql Server,Sql Server 2008,Bulkinsert,我试图运行以下命令从CSV文件批量插入数据-- 我得到的错误是-- Msg 4866,第16级,状态1,第1行 批量加载失败。数据文件中第1行第6列的列太长。 验证是否正确指定了字段终止符和行终止符。 味精7399,第16级,状态1,第1行 链接服务器(null)的OLE DB提供程序“大容量”报告了错误。提供商未提供有关错误的任何信息。 信息7330,16级,状态2,第1行 无法从链接服务器(null)的OLE DB提供程序“大容量”中获取行 这是第一行的数据-- 在表中,最后一个字段(与上面
批量加载失败。数据文件中第1行第6列的列太长。
验证是否正确指定了字段终止符和行终止符。
味精7399,第16级,状态1,第1行
链接服务器(null)的OLE DB提供程序“大容量”报告了错误。提供商未提供有关错误的任何信息。
信息7330,16级,状态2,第1行
无法从链接服务器(null)的OLE DB提供程序“大容量”中获取行 这是第一行的数据-- 在表中,最后一个字段(与上面的第6列数据相对应=0)的类型为“int”
我做错了什么?为什么会出现上述错误?除非文件源是Unix,否则文件的行终止符很可能是 \r\n
可以使用十六进制编辑器验证文件的终止符,也可以尝试将其作为行终止符。我从Oracle/Unix获得了提取。我将
\r\n
替换为rowdterminator='0x0a'
,它对我有效。非常感谢 与上面的回答一样,我在将csv文件导入SQL Server时遇到了同样的问题。我使用的是
rowtterminator='\n'
,我还尝试使用'\r\n'
和'\r'
。他们都没有工作
但是当使用rowdterminator='0x0a'
时,加载的表不会出现问题
我不知道这背后的“原因”,希望其他人能对此有所了解。我遇到了类似的问题,并且知道除非文件是UNIX类型的\r\n
生成格式文件(.fmt或.xml)时,请注意左侧的第三列。它被称为列的最小长度。有时sql server会将其默认为2,尽管您在创建脚本中没有提到它。将该值更改为0。有时您可能还必须允许NULL,所以将其更改为零,它现在应该可以工作了通常问题是行分隔符。正确检查您的分隔符。我尝试使用您建议的终止符-但仍然得到相同的错误?请让我知道,如果你有任何进一步的想法,以帮助解决这个问题。。。谢谢…这里有一个答案:如果“\n”或“\r\n”不适合您,建议使用行终止符=“0x0a”。这对我有用!在平面文件有文本限定符“和字段终止符”的情况下,这对我来说是有效的。这在所有情况下都有效吗?或者有例外吗
BULK INSERT TestDB.dbo.patent
FROM 'C:\1patents.csv'
WITH (FIRSTROW = 1, FIELDTERMINATOR = '^', ROWTERMINATOR='\n');
00000001^^18360713^295^4^0