python - 使用 Python 将数百万条记录插入 MySQL 数据库

标签 python mysql insert sql-insert large-data

我有一个包含大约 1 亿条记录(数字)的 txt 文件。我正在用 Python 读取这个文件,并使用来自 python 的简单插入语句将它插入到 MySQL 数据库中。但它花了很长时间,看起来剧本永远不会完成。执行此过程的最佳方式是什么?该脚本使用不到 1% 的内存和 10% 到 15% 的 CPU。

对于处理如此大的数据并将其高效地插入数据库的任何建议,我们将不胜感激。

谢谢。

最佳答案

向表中插入行的最快方法是使用 LOAD DATA INFILE 语句。

引用:https://dev.mysql.com/doc/refman/5.6/en/load-data.html

执行单个 INSERT 语句以一次插入一行,RBAR(逐行痛苦)非常缓慢,因为数据库必须执行所有工作执行一条语句...语法分析、语义分析、准备执行计划、获取和释放锁、写入二进制日志...

如果你必须执行 INSERT 语句,那么你可以使用 MySQL 多行插入,那样会更快。

  INSERT INTO mytable (fee, fi, fo, fum) VALUES 
   (1,2,3,'shoe')
  ,(4,5,6,'sock')
  ,(7,8,9,'boot') 

如果一次插入四行,则需要执行的语句数量会减少 75%。

关于python - 使用 Python 将数百万条记录插入 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928713/

相关文章:

mysql - ZF2 Mysql回滚提交功能

mysql - 在 SQL 中插入多条记录,其中值是单个查询中定义范围的所有组合

php - Select id_value from db into array 复选框并将多个值从数组复选框插入到一列,并以逗号分隔

python - 如何使用pandas实现vlookup交叉引用

python - Python 中的共享文件夹 session

python - 使用 pip freeze > requirements.txt 将复制特定于该目录的库?

php - 如何在数据库中获取和存储时间戳

mysql - 是否可以在没有任何或所有 MyISAM、MERGE、MEMORY 或 CSV 引擎的情况下从源代码编译 MySQL。

python - 打印相等运算符

php - 如何在 php pdo 中使用 1 个表单将数据插入到 2 个不同的表中?