在SQL Server 2014中使用Formatfile导入UTF8文件?

时间:2017-05-11 07:45:50

标签: sql-server utf-8 bulkinsert

我想使用批量插入命令将Textfiles导入SQL Server 2014。我使用格式文件跳过不需要的列。 所以这个工作正常,除了UTF8文件。某些特殊字符(ä,ö,ü,...)未正确导入。

this文章中的解决方案有效,但不使用格式文件。我还尝试将Formatfile中的数据类型更改为“SQLNCHAR”,这会导致此错误:

Msg 4863, Level 16, State 1, Line 3
Bulk load data conversion error (truncation) for row 11, column 1 (col1).
Msg 7399, Level 16, State 1, Line 3
The OLE DB provider "BULK" for linked server "(null)" reported an error. The 
provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 3
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".

那么UTF8-Codepage如何与格式文件结合使用?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我想通了......

由于UTF8编码,在批量插入语句中定义了排序/编码:

WITH (CODEPAGE = '65001', DATAFILETYPE = 'Char', ...)

在这种情况下,格式文件中的排序规则必须为空,并且类型必须为“SQLCHAR”。例如,我的格式文件中的第一行是:

1   SQLNCHAR    0   50  |   1   column1 ""

希望它可以帮助其他人避免数小时的搜索...