批量插入不处理重音字符

问题描述 投票:0回答:1

我很抱歉提出了一个以前以多种形式提出的问题,但我正在抓狂......

我正在使用 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' );

如有任何建议,我们将不胜感激,谢谢。

utf-8 bulkinsert diacritics
1个回答
0
投票

正如 JosefZ 在他的评论中指出的那样(并且我自己发现自己是因为我完全没有注意到该评论),答案就在他的链接中:如何在 SQL Server 中使用批量插入写入 UTF-8 字符?

简而言之,在 BULK INSERT 语句中使用 CODEPAGE = 65001。

再次感谢。

© www.soinside.com 2019 - 2024. All rights reserved.