我有这个小的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”,用于链接服务器 “(空)”。
问题出在哪里?
答案 0 :(得分:1)
尝试指定widechar
而不是widenative
您的原始语句使用的是字符模式,而不是原生BCP格式。另外,确保源文件是Unicode(不是UTF-8)。
答案 1 :(得分:1)
而不是DataFileType尝试使用CODEPAGE = 1252。