是mysql加载文件数据字符集处理环境依赖吗?

时间:2018-01-25 16:06:23

标签: java mysql utf-8 mysql-workbench

我从java.sql.Statement.executeUpdate(String sql)调用了DATA INFILE,将UTF-8 CSV文件加载到表格中。

当我使用

LOAD DATA INFILE '/var/lib/mysql-files/upload/utf8table.csv' INTO TABLE temp.utf8table CHARACTER SET utf8 FIELDS TERMINATED BY ';'  LINES TERMINATED BY '\r\n' (@vC1, @vC2) set C1=@vC1, C2=nullif(@vC2,'');

,未指定CHARACTER SET utf8,非ASCII字符已损坏。
但是在Mysql Workbench中执行时,相同的查询正确导入了所有字符。
指定charset的查询在两种情况下都能很好地工作。导致这种行为的执行环境有什么不同?

1 个答案:

答案 0 :(得分:2)

根据文件:

  

服务器使用character_set_database系统变量指示的字符集来解释文件中的信息。 SET NAMES和character_set_client的设置不影响输入的解释。如果输入文件的内容使用的字符集与默认值不同,通常最好使用CHARACTER SET子句指定文件的字符集。二进制字符集指定“无转换”。

另见sysvar_character_set_client。如果未指定,则默认为latin1