【问题标题】:PHP -MYSQL: Will the database import more than 40,000 rows?PHP -MYSQL:数据库会导入超过 40,000 行吗?
【发布时间】:2014-10-01 00:21:27
【问题描述】:

我正在为 Autoparts 商店开发一个 Web 应用程序。

我正在制定一个算法,以导入包含或多或少 40,000 个产品(行)的 CSV 文件。这是我第一次处理这么大的文件。所以在继续之前我有一些问题。

1) MySQL 会花时间导入每一行,还是会自动崩溃并在时间限制或其他情况下抛出错误?

2) 我将 PDO 用于所有与数据库相关的内容。如果数据库正在导入所有这数千行,而 Web 应用程序用户突然关闭浏览器、关闭计算机或其他什么,该怎么办?

上传的文件是否会在服务器中完成导入?还是交易会中断?

在这种情况下,我想要回滚。

谢谢你启发我。

【问题讨论】:

  • 40,000 确实不是那么多记录。您应该一次读取一行 csv 文件,以避免 fgets() 或类似的东西出现内存问题。退出浏览器不应该改变 sql 事务的任何内容。不回滚,备份数据库,失败则恢复。
  • 您可以尝试使用LOAD DATA INFILE 并先将您的 CSV 文件读入临时表。
  • 其实CSV文件已经转换成关联数组了。因此,当我准备好创建 INSERT 查询时,我正在使用关联数组。它不再是 CSV 文件。但是该数组包含这 40,000 行。
  • @JuanBonnett 如果它仍然是 CSV,你会更轻松。
  • 我要研究 LOAD DATA INFILE 的东西,看看我能用它做什么。不将文件转换为数组,我最好将数据导入那里。谢谢

标签: php mysql insert


【解决方案1】:

是的,您可以插入超过 40,000 条记录。

只需检查这些配置。

max_allowed_packet 
bulk_insert_buffer_size
key_buffer_size

你可以参考这个 http://dev.mysql.com/doc/refman/5.7/en/packet-too-large.html

【讨论】:

  • 请尝试链接到与 MySQL 最新版本相关的文档。 5.1 已经过时了。
猜你喜欢
  • 2020-09-12
  • 2014-06-29
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多