添加DATAFILETYPE ='widenative'时批量插入符中断

时间:2016-03-30 11:28:55

标签: sql-server bulkinsert

我有这个小的sql脚本将分号分隔的文件导入到我的数据库的特定表中:

IllegalArgumentException

它的工作就像一个魅力。 唯一的问题是没有插入一些特殊的unicode字符,如ó或é,而不是文件的编码。

所以我添加了WITH关键字括号之间的下一行:

BULK INSERT foo_bar FROM 'C:\Users\JohnDoe\projects\foo\ftp-data-importator\bar.txt' WITH ( FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, MAXERRORS = 100000, ERRORFILE = 'c:\temp\foobar_bulk_log.txt' ) GO

而不是尊重编码会破坏整个执行并给我下一个错误:

  

Msg 4866,Level 16,State 5,Line 5批量加载失败。专栏   在第1行第1列的数据文件中太长。验证是否   字段终止符和行终止符是正确指定的。消息7301,   16级,状态2,行5无法获得所需的接口   (“IID_IColumnsInfo”)来自OLE DB提供程序“BULK”,用于链接服务器   “(空)”。

问题出在哪里?

2 个答案:

答案 0 :(得分:1)

尝试指定widechar而不是widenative您的原始语句使用的是字符模式,而不是原生BCP格式。另外,确保源文件是Unicode(不是UTF-8)。

答案 1 :(得分:1)

而不是DataFileType尝试使用CODEPAGE = 1252。