MySQL加载以非ascii字符结束字段的DATA inffile



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

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

我有一些重大问题,我试过使用FIELDS TERMINATED BY 0x00FE语法使用我能想到的所有刺字符的变化,我试过改变连接的字符集(SET NAMES ...),但我一直得到警告…

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

…所有的数据加载到第一列。

有什么办法可以解决这个问题吗?或者我辞职用sed预处理文件,在加载之前用更明智的字符替换所有的刺?

我已经成功地在dbForge Studio中为MySQL加载了数据导入工具(CSV格式)。我只是设置'Þ'作为自定义分隔符。免费的Express Edition完全支持从CSV格式导入。

我决定通过将非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

最新更新