我有一个小写的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?
答案 0 :(得分:0)
我已成功在Data Import tool中使用dbForge Studio for MySQL(CSV格式)加载此数据。我只是将'Þ'设置为自定义分隔符。免费的Express Edition完全支持从CSV格式导入。
答案 1 :(得分:0)
我决定通过将非ASCII字符替换为MySQL LOAD DATA INFILE ...
可以理解的字符来修复该文件。
使用od
获取有问题的字符的八进制字节值 - od -b file.log
- 在这种情况下为376
。
使用grep
确保文件中尚不存在您要替换的字符 - grep -n '|' file.log
。
使用sed
和printf
替换非ASCII字符 - sed -i 's/'$(printf '\376')'/|/g' file.log
。