Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server大容量插入失败,但使用导入向导可以轻松导入文件_Sql Server_Bulkinsert_Flat File - Fatal编程技术网

Sql server SQL Server大容量插入失败,但使用导入向导可以轻松导入文件

Sql server SQL Server大容量插入失败,但使用导入向导可以轻松导入文件,sql-server,bulkinsert,flat-file,Sql Server,Bulkinsert,Flat File,我有一个R脚本,它将多年的FFIEC银行呼叫报告计划合并到平面文件中——每个计划一个——然后将每个计划写入一个以制表符分隔、不带引号的平面文件,该文件适合批量插入SQL Server。然后运行此批量插入命令: bulk insert CI from 'e:\CI.txt' with (firstrow = 2, rowterminator = '0x0a', fieldterminator = '\t') 大容量插入将运行一段时间,然后退出,并显示以下错误消息: Msg 7301, Level

我有一个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)".
The bulk load failed. The column is too long in the data file for row 1, column 1."
我在这里搜索了答案,最常见的问题似乎是行终止符参数。我知道我创建的文件有一个换行符,没有回车符,所以“0x0a”是正确的参数(但我尝试了“\n”,但它不起作用)

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

Msg 7301, Level 16, State 2, Line 4
Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)".
The bulk load failed. The column is too long in the data file for row 1, column 1."
因此,这告诉我SQL Server可以访问该文件,并且确实开始插入它

此外,我还进行了手动导入(右键单击数据库,任务->导入数据),SQL Server毫不费力地吞下了该文件。这说明表的布局是好的,文件也是好的

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


我被难住了,对任何可能性都持开放态度

我将通过查看输入文件是否有“特殊”之处开始对此进行故障排除。如果在十六进制编辑器中打开文件,行终止符是否符合预期?在十六进制编辑器中打开,查看文件开头是否有任何unicode标识符(2个额外字节,某些进程可以忽略,但其他进程则不能)。如果在文本编辑器中手动创建文件,是否可以处理该文件?最好把问题缩小一些。你说你正在使用一个无引号的文件。。。您的某些字段数据是否可能包含制表符、回车符或换行符?我正在处理的原始文件是以制表符分隔的\r\n行尾。我的脚本将文本读取到内存中,用不可能出现在数据中的占位符替换\r\n(!!~~!!),用“”替换所有其他内容,然后替换!!~!!与\n。这可能会留下额外的\t,但我会在将文本文件读入R时出错,而我不会。好吧,这真的很奇怪。我将文件的前1000行放在一个文本文件中,并尝试批量插入它们。没问题。所以我增加了记录的数量(2000、3000等),直到失败。我最终发现在文件的第8490行插入失败。我在一个十六进制编辑器中检查了该行和周围的行,没有任何错误(没有多余的字符)。因此,我尝试插入一个文件,该文件由两次复制的前8400行组成(总共16800行)。结果失败了!这让我觉得有某种大小限制或超时正在发生。更新:我们有第二个SQL Server实例,今天我想到用完全相同的布局和完全相同的制表符分隔文件尝试相同的大容量插入。我做到了,而且成功了,没问题。因此,另一个SQL Server实例中出现了一些问题。