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字符来修复该文件。
使用
od
得到违规字符的八进制字节值 -od -b file.log
- 在这种情况下,它是376
。使用
grep
来确保您要替换的字符不存在于文件grep -n '|' file.log
中。使用sed
和printf
替换非ASCII字符 -sed -i 's/'$(printf '\376')'/|/g' file.log
。
答
我已成功地在dbForge Studio for MySQL中以Data Import tool(CSV格式)加载此数据。我只是将'Þ'设置为自定义分隔符。免费的Express Edition完全支持CSV格式的导入。
这是一个选项,但理想情况下,我想找到一种方式从与数据库相同的服务器导入文件。 – chattsm
该文件应该可以被应用程序访问。数据导入工具支持命令行,您可以在服务器上自动执行它(当然,如果可能的话)。 – Devart