将数据加载到MySQL中:如何处理反斜杠?

ktm*_*124 4 mysql sql unix bash

我从一个着名的源代码下载了一个制表符分隔的文件,现在想把它上传到MySQL表中.我正在使用这个load data local infile.

这个拥有超过1000万条记录的数据文件也有许多反斜杠的不幸.

$ grep '\\' tabd_file.txt | wc -l
223212
Run Code Online (Sandbox Code Playgroud)

这些反斜杠不是问题,除非它们出现在字段的末尾.MySQL将反斜杠解释为转义字符,当它出现在字段的末尾时,它会混淆下一个字段,或者可能是下一行.

尽管存在这些反斜杠,但在将其加载到表中时,我只收到了来自MySQL的6个警告.在这些警告,一排没有列适当数量正是因为反斜线在同一行中串接两个相邻的领域.

我的问题是,如何处理这些反斜杠?我应该指定load data local infile [...] escaped by ''从中删除任何特殊含义吗?或者这会产生意想不到的后果吗?我想不出这个数据文件中转义序列的一个重要用途.终止字段的实际选项卡是"物理选项卡",而不是"\ t"序列.

或者,从我的加载命令不良做法中删除转义字符?我应该用'\'文件替换文件中的每个实例'\\'吗?

谢谢你的建议:-)

kor*_*der 16

如果你不需要转义,那么一定要使用ESCAPED BY''.

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

"如果FIELDS ESCAPED BY字符为空,则不会发生转义序列解释."