MySQL LOAD DATA INFILE,字段以非ASCII字符结尾

时间:2011-10-21 10:03:10

标签: mysql file load special-characters

我有一个小写的thorn分隔文件,我需要使用LOAD DATA INFILE ...查询加载到MySQL数据库(5.1.54)。

我正在尝试加载的文件与MySQL数据库位于同一服务器上,我正在使用SQLYog从Windows机器发出查询,该机器使用MySQL C客户端库。

我遇到了一些重大问题,我尝试使用FIELDS TERMINATED BY 0x00FE语法,使用我能想到的thorn字符的所有变体,并且我尝试更改字符集连接(SET NAMES ...),但我一直得到警告......

Warning Code : 1638
Non-ASCII separator arguments are not fully supported

...并且所有数据都加载到第一列。

有什么方法可以解决这个问题吗?或者我是否已经辞职以使用sed预处理文件,以便在加载前用更合理的字符替换所有thorn

2 个答案:

答案 0 :(得分:0)

我已成功在Data Import tool中使用dbForge Studio for MySQL(CSV格式)加载此数据。我只是将'Þ'设置为自定义分隔符。免费的Express Edition完全支持从CSV格式导入。

答案 1 :(得分:0)

我决定通过将非ASCII字符替换为MySQL LOAD DATA INFILE ...可以理解的字符来修复该文件。

  1. 使用od获取有问题的字符的八进制字节值 - od -b file.log - 在这种情况下为376

  2. 使用grep确保文件中尚不存在您要替换的字符 - grep -n '|' file.log

  3. 使用sedprintf替换非ASCII字符 - sed -i 's/'$(printf '\376')'/|/g' file.log