mysql - 加载数据到 MySQL : How to deal with backslashes?

标签 mysql sql bash unix

我从知名来源下载了一个制表符分隔的文件,现在想将其上传到 MySQL 表中。我正在使用 load data local infile 执行此操作。

这个超过1000万条记录的数据文件,也不幸出现了很多反斜杠。

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

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

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

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

或者,从我的加载命令中删除转义字符是否是一种不好的做法?我是否应该将文件中的每个 '\' 实例替换为 '\\'

感谢任何建议:-)

最佳答案

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

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

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

关于mysql - 加载数据到 MySQL : How to deal with backslashes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15684286/

相关文章:

mysql - 如何在MySQL中以年、月、日为单位求和持续时间?

c# - 如何使用 MYSQL 在 C# 中的 datagridview 中插入、删除、选择、更新值

c# - 如何将多行组合成单个文本?

SQL Server SQL JOIN 帮助

Bash:将属性文件读入数组

python - 升级了 python 并且无法让 mysqldb 工作

python - 如何获取MySQL分组内的计数

sql - SELECT COUNT(*) - 如果没有匹配的行,则返回 0 和分组字段

bash - 使用 sed 取消注释代码

linux - 监控/etc/passwd文件