无法确定BULK INSERT错误的原因
我试图运行此查询(我也试过它,但未指定FIELDTERMINATOR和ROWTERMINATOR)。它使用的是我手动创建的数据文件(不带bcp输出)。无法确定BULK INSERT错误的原因
BULK INSERT FS.dbo.Termination_Call_Detail FROM 'C:\Termination_Call_Detail__1317841711.dat'
WITH
(
FORMATFILE = 'C:\Termination_Call_Detail__update_TerminationCallDetailData.fmt',
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\r\n'
)
的误差我得到:
服务器消息号= 4864严重性= 16状态= 1行= 1个 服务器= USA109MSSQL1A
文本=批量负载数据转换错误(类型不匹配或对于指定的代码页无效 字符) 用于第1行第9列(RouterCallKey)。服务器消息号= 4832严重性= 16状态= 1行= 1 服务器= USA109MSSQL1A
文本=盒装负载:在 数据文件中遇到文件的一个意外结束。服务器消息号= 7399严重性= 16状态= 1行= 1个 服务器= USA109MSSQL1A
文本= OLE DB提供 “BULK” 链接服务器 “(空)” 报告错误。
提供者没有提供有关错误的任何信息。Server邮件数量= 7330严重性= 16状态= 2线= 1个 服务器= USA109MSSQL1A
文本=无法获取来自OLE DB提供程序 “BULK” 为链接 服务器 “(空)” 一行。
我想让它只用1行工作。
ASCII数据文件:
数据文件的611658275664 1 5027 5001 5005 5010 2011-10-05 14:53:44 1317840824 240 2011-10-05 14:54:04 1317840844 150026 211 2 1 4480 21543 28 0 29 0 0 0 0 29 0 0 0 IPT_Call TAC_Rollover 424755/4 N 0 5030 5000 2865 805336626 2674794299 N 1 3 N 0 0
六角转储:http://pastebin.com/grnwQrdT
格式文件:http://pastebin.com/WwSQvCGg
表架构:http://pastebin.com/gFjp4xYy
此插入件被使用66列;该表包含84列。如果我用整个表的bcp和同一行的数据文件创建一个格式文件,我可以毫无问题地运行这个BULK INSERT QUERY。通过BCP在同一行数据的创建(所有列)数据文件的
十六进制转储:http://pastebin.com/MpMk6iq4
我精心寻找任何缺失或换行分隔符标签,但我不能找到任何。您可以在数据文件的十六进制转储中看到所有内容都正确分隔。我将它与一个由bcp创建的数据文件进行比较,并且找不到任何格式差异。
我也不能想象为什么它抱怨那个特定的字段(RouterCallKey) - 在格式文件中有相同类型的其他字段(如RouterCallKeyDay)。
谢谢!
回答:
难道你不知道吗,在我感到沮丧到足以发布这个问题之后,我就明白了。代码中的其他地方有一个逻辑错误,它创建的数据文件是以这种大容量插入查询的错误形式提供的
以上是 无法确定BULK INSERT错误的原因 的全部内容, 来源链接: utcz.com/qa/262000.html