mysql - 使用正确的转义将文件加载到 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 加载参数方面是否有任何方法可以解决这个问题? 否则,我可能会在加载文件之前做一些清理工作。
解决方案
您必须转义要插入的双引号。这可以通过ESCAPED BY '<char>'
在之后添加命令来完成FIELDS
。下面的示例显示了如何将反斜杠设置为转义字符。
...FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'...
有关更多信息,请参阅https://dev.mysql.com/doc/refman/8.0/en/load-data.html。
推荐阅读
- python - Kivy GridLayout 错误:未设置列或行,未触发布局
- javascript - React TypeError:无法读取未定义问题的属性'categoryName'
- networking - Pi 4:如果 eth0 和 wlan0 都处于活动状态/已连接,则无线网络接口不起作用
- python - 是否有另一种方法可以在不使用 eval/dictionary 的情况下通用地控制代码流?
- php - 将带有国家代码的电话号码导出到excel中成为公式| maat网站 | 优秀 | 拉拉维尔 | PHP
- java - java中正则表达式反向组为空时的字符串替换
- c# - 如何向问题发布注释并关闭此问题
- wordpress - 从托管在 Microsoft Azure 上的 WordPress 发送电子邮件
- kql - 操作 ID 的 Kusto 内存状态
- php - docker内部的php soap服务器不返回响应