SQL Server批量插入失败,但是使用导入向导很容易导入文件

问题描述

我有一个R脚本,它将多年的FFIEC银行呼叫报告计划合并为平面文件(每个计划一个),然后将每个计划写入制表符分隔的,不带引号的平面文件中,以适合批量插入sql Server 。然后我运行以下批量插入命令:

bulk insert CI from 'e:\CI.txt' with (firstrow = 2,rowterminator = '0x0a',fieldterminator = '\t')

批量插入将运行一段时间然后退出,并显示以下错误消息:

Msg 7301,Level 16,State 2,Line 4
Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for Linked Server "(null)".

在这里搜索了答案,最常见的问题似乎是rowterminator参数。我知道我创建的文件具有换行符而没有回车符,因此'0x0a'是正确的参数(但是我尝试了'\ n'却不起作用)。

有趣的是,我尝试将fieldterminator设置为乱码,只是为了看看发生了什么,并且得到了预期的错误消息:

The bulk load Failed. The column is too long in the data file for row 1,column 1."

这告诉我sql Server有权访问该文件,并且确实开始插入它。

此外,我进行了手动导入(右键单击数据库,任务->导入数据),sql Server吞下了文件,没有任何障碍。这说明表的布局很好,文件也一样?

文件末尾是否有可能使批量插入混淆?我查看了一个十六进制编辑器,它的结尾是数据,后跟0A(换行的十六进制代码)。

我很困惑,并愿意接受任何可能性!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)