php - 优化大量 MySQL INSERT

标签 php sql mysql bulkinsert

我有一个需要运行每日脚本的应用程序;每日脚本包括下载一个包含 1,000,000 行的 CSV 文件,并将这些行插入到表中。

我在 Dreamhost 中托管我的应用程序。我创建了一个 while 循环,遍历所有 CSV 行并为每一行执行 INSERT 查询。问题是我收到“500 内部服务器错误”。即使我将它分成 1000 个文件,每个文件有 1000 行,我也不能在同一个循环中插入超过 40 或 5 万行。

有什么方法可以优化输入吗?我也在考虑使用专用服务器;你怎么看?

谢谢!

佩德罗

最佳答案

大多数数据库都有优化的批量插入过程 - MySQL's is the LOAD DATA FILE syntax .

要加载 CSV 文件,请使用:

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
  FIELDS TERMINATED BY ',' ENCLOSED BY '"'
  LINES TERMINATED BY '\r\n'
  IGNORE 1 LINES;

关于php - 优化大量 MySQL INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3712906/

相关文章:

sql - 在SQL中的列中写入 "ID"的正确方法

mysql - 测验数据库设计

php - 如何在 zend 框架应用程序中使用两个 MySql 服务器实例进行负载平衡?

php - ampps 3.8 上的本地主机太慢

php - Ratchet Websocket 推送集成

javascript - AJAX 在页面上提交单个表单

sql - 是否有可能在 YQL 中获得两个结果集的交集或差异?

python - pandas to_sql() 和 read_sql_query() 处理空字符串

php - 单查询和多查询哪个更好?

PHP:为 date() 找到正确的算法;有一年的时差