我很抱歉提出了一个以前以多种形式提出的问题,但我正在抓狂......
我正在使用 BULK INSERT 加载我坚信的(Notepad++ 报告为)UTF-8 文件,它包含许多 EU 重音字符,这些字符正在丢失并通常显示为 2 个字符,其中第一个字符通常是ASCII 43(通常是 + 号,但不会这样显示)。我还对文件进行了八进制转储,虽然“标准”字符占用一个字节,但重音字符占用 2 个字节,我假设是 UTF-8。行以 LF 终止,无 CR。
如果我使用 SSMS 为同一数据库导入文件,它将被拉入一个表中,并显示正确的重音符号,但不会使用 BULK INSERT。
我尝试使用 CODEPAGE = 'RAW' 和 'ACP' 无济于事 - 它导入数据但重音丢失。我也尝试过 DATAFILETYPE ='widechar' 和 'widenative' 但没有成功。示例:
BULK INSERT #Tmp1 FROM 'Fred.csv'
WITH (FIRSTROW = 2, FIELDTERMINATOR = ',',
ROWTERMINATOR = '0x0a' , CODEPAGE = 'ACP' );
如有任何建议,我们将不胜感激,谢谢。
正如 JosefZ 在他的评论中指出的那样(并且我自己发现自己是因为我完全没有注意到该评论),答案就在他的链接中:如何在 SQL Server 中使用批量插入写入 UTF-8 字符?
简而言之,在 BULK INSERT 语句中使用 CODEPAGE = 65001。
再次感谢。