所以我写了一个脚本,它将数据从一行超过1.5米的csv文件导入mysql innodb表,它将扫描CSV,然后扫描每个CSV行:
然后转到CSV的下一行并再次执行上述步骤。
问题是,导入数据的表还有1.5米的记录,这使得导入数据的速度太慢。我尝试了脚本,看到了:
是否有任何解决方案可以加快导入进度?
答案 0 :(得分:0)
问题的根源是:
您在表中搜索要插入的密钥,但是当您执行插入时,数据库管理系统也会执行完整性检查,即确保没有NULL
值标记为NOT NULL
的列,检查是否未违反外键约束,以及(在这种情况下最重要),确保主键和唯一字段是唯一的。
这意味着当您执行INSERT
使您的早期搜索多余时,DBMS将(除其他外)搜索该项目。
您可以将3个操作替换为类似的操作:
INSERT INTO tablename(column1,column2...)
VALUES (v1,v2,....)
ON DUPLICATE KEY UPDATE SET column1=v1...
同样有用的是知道如果你说column1=VALUES(column1)
这意味着"使用我在插入的VALUES()
部分中指定的值。