MySQL负载数据INFILE与非ASCII字符终止的字段

问题描述:

我有一个小写thorn分离文件,我需要使用LOAD DATA INFILE ...查询加载到MySQL数据库(5.1.54)。MySQL负载数据INFILE与非ASCII字符终止的字段

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

我有一些重大问题,我已经使用FIELDS TERMINATED BY 0x00FE语法使用thorn角色,我能想到的所有变化试过,我已经试图改变字符集的连接(SET NAMES ...),但我始终得到警告...

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

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

有没有办法解决这个问题?或者我是否已经辞职,以便在装入前用sed预处理文件,以便用更明智的角色替换所有thorn的文件?

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

  1. 使用od得到违规字符的八进制字节值 - od -b file.log - 在这种情况下,它是376

  2. 使用grep来确保您要替换的字符不存在于文件grep -n '|' file.log中。使用sedprintf替换非ASCII字符 - sed -i 's/'$(printf '\376')'/|/g' file.log

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

+0

这是一个选项,但理想情况下,我想找到一种方式从与数据库相同的服务器导入文件。 – chattsm

+0

该文件应该可以被应用程序访问。数据导入工具支持命令行,您可以在服务器上自动执行它(当然,如果可能的话)。 – Devart