首页 > 解决方案 > 使用正确的转义将文件加载到 mysql 表中

问题描述

我打算将一个文件(结构如下)加载到 mysql 表中。

"id","name","city","occupation"
"1","ami","Puchong","Engineer"
"2","sandy","Puchong (Equine Park)","Teacher"
"3","sam","Puchong "Puncak Jalil"","Doctor"

并期望获得如下表结构

|id|name|city|occupation|
|1|ami|Puchong|Engineer|
|2|sandy|Puchong (Equine Park)|Teacher|
|3|sam|Puchong "Puncak Jalil"|Doctor|

我正在使用以下命令加载文件:

将文件 '/home/kimi/my.txt' 中的数据加载到以 ',' 结尾的表测试字段中,并由 '"' 包围的行以 '\n' 终止 IGNORE 1 LINES;

这适用于 id 1&2,但是我收到警告消息

“第 3 行不包含所有列的数据”。

我认为第 3 列中额外的 " 导致了这个问题。我想知道 mysql 加载参数方面是否有任何方法可以解决这个问题? 否则,我可能会在加载文件之前做一些清理工作。

标签: mysql

解决方案


您必须转义要插入的双引号。这可以通过ESCAPED BY '<char>'在之后添加命令来完成FIELDS。下面的示例显示了如何将反斜杠设置为转义字符。

...FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'...

有关更多信息,请参阅https://dev.mysql.com/doc/refman/8.0/en/load-data.html


推荐阅读