提问人:Phaelax z 提问时间:11/16/2023 更新时间:11/16/2023 访问量:25
从 CSV 同步表?
sync table from a csv?
问:
我有一个 CSV,我想与现有表同步。如果未找到键,则应使用 CSV 中的值更新表或插入新行。这可能吗?除了简单地导入 csv 之外,我似乎找不到任何东西。我唯一能想到的就是用另一种语言编写脚本,逐行查看 csv,并以这种方式检查每一行。有没有办法只用一个sql脚本来实现这一点?
答:
0赞
Tangentially Perpendicular
11/16/2023
#1
如果在具有唯一索引或主键的表上使用,则将插入新记录。LOAD DATA INFILE
可以通过以下三种方式之一处理重复项:
- 使用 关键字,会将整行替换为
传入数据
REPLACE
- 使用关键字将丢弃传入的
排。
IGNORE
- 对于这两个关键字,重复项将引发错误并停止。
LOAD
如果您想要更好地控制如何处理重复项(例如,仅更新现有行中的一列),则需要编写一些内容来读取 CSV 文件并逐行插入行。
参考: https://dev.mysql.com/doc/refman/8.0/en/load-data.html#load-data-error-handling
评论
0赞
Phaelax z
11/16/2023
CSV 是否必须匹配相同数量的列?我想我可以使用 REPLACE,除了我从 csv 中排除的一列。
0赞
Tangentially Perpendicular
11/16/2023
不。您可以完全像以前一样将 CSV 字段映射到列。该选项将使用表定义中列的默认值或您在地图中专门为其输入的任何值,为其找到的任何重复项创建新行。您可以在我链接的页面上找到所有详细信息。REPLACE
0赞
Phaelax z
11/17/2023
我已经解决了,谢谢。
上一个:让我明白这意味着什么 [关闭]
下一个:修改存储为 JSON 的列数据
评论