开发者社区> 问答> 正文

具有ON DUPLICATE键更新的MySQL LOAD DATA INFILE

为了将大量数据加载到MySQL中,LOAD DATA INFILE是迄今为止最快的选择。不幸的是,尽管可以通过INSERT IGNORE或REPLACE的方式使用它,但当前不支持ON DUPLICATE KEY UPDATE。

但是,ON DUPLICATE KEY UPDATE具有的优势REPLACE。当存在重复项时,后者执行删除和插入操作。这带来了密钥管理的开销。另外,自动增量编号在替换时不会保持不变。

ON DUPLICATE KEY UPDATE使用LOAD DATA INFILE时如何模拟?

展开
收起
保持可爱mmm 2020-05-11 13:44:28 753 0
1 条回答
写回答
取消 提交回答
  • 这些步骤可用于模拟此功能:

    1)创建一个新的临时表。

    CREATE TEMPORARY TABLE temporary_table LIKE target_table; 2)(可选)从临时表中删除所有索引,以加快处理速度。

    SHOW INDEX FROM temporary_table; DROP INDEX PRIMARY ON temporary_table; DROP INDEX some_other_index ON temporary_table; 3)将CSV加载到临时表中

    LOAD DATA INFILE 'your_file.csv' INTO TABLE temporary_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (field1, field2); 4)使用ON DUPLICATE KEY UPDATE复制数据

    SHOW COLUMNS FROM target_table; INSERT INTO target_table SELECT * FROM temporary_table ON DUPLICATE KEY UPDATE field1 = VALUES(field1), field2 = VALUES(field2); 5)删除临时表

    DROP TEMPORARY TABLE temporary_table; 对于任何给定的表,使用SHOW INDEX FROM和SHOW COLUMNS FROM此过程都可以自动化。来源:stack overflow

    2020-05-11 13:44:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像