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

时间:2013-03-28 14:21:45

标签: mysql sql bash unix

我从知名来源下载了一个制表符分隔文件,现在想将其上传到MySQL表中。我这样做是使用load data local infile

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

$ grep '\\' tabd_file.txt | wc -l
223212

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

尽管存在这些反斜杠,但在将其加载到表格中时,我只收到了来自MySQL的6个警告。在每个警告中,一行没有精确的列数,因为反斜杠连接了同一行中的两个相邻字段。

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

或者,是否从我的加载命令错误练习中删除转义字符?我应该用'\'替换文件中的'\\'的每个实例吗?

感谢您的任何建议: - )

1 个答案:

答案 0 :(得分:15)

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

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

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