php - 在 mysql 表中上传大约 10,000,000 条记录的大型 CSV 文件也包含重复行

标签 php javascript mysql ajax

我想在 mysql 表中上传一个大约 10,000,000 条记录的大型 csv 文件,其中还包含相同或更多的编号。记录和一些重复记录。 我尝试了 Local data infile 但它也需要更多时间。 我如何在不等待很长时间的情况下解决这个问题。 如果无法解决,那么我如何使用 AJAX 发送一些记录并一次处理它,直到整个 csv 被上传/处理为止。

最佳答案

LOAD DATA INFILE 在速度方面不会被击败。您可以采取一些措施来加快速度:

  • 删除或禁用一些索引(当然,您将在加载后等待它们构建。但这通常更快)。如果您使用的是 MyISAM,则可以 ALTER TABLE *foo* DISABLE KEYS,但不幸的是,InnoDB 不支持它。相反,你必须放弃它们。
  • 优化您的 my.cnf 设置。特别是,您可以禁用很多安全功能(如 fsync)。当然,如果发生崩溃,则必须恢复备份并重新开始加载。此外,如果您正在运行默认的 my.cnf,我最后检查了它对于数据库机器的次优选择。周围有大量调整指南。
  • 购买速度更快的硬件。或租用一些(例如,尝试快速的 Amazon ECC 实例)。
  • 正如@ZendDevel 所提到的,如果您不局限于 MySQL,请考虑其他数据存储解决方案。例如,如果您只是存储电话号码列表(以及一些数据),普通哈希表会快很多倍。

如果问题是它会破坏数据库性能,您可以将 CSV 文件拆分为多个 CSV 文件,然后分 block 加载它们。

关于php - 在 mysql 表中上传大约 10,000,000 条记录的大型 CSV 文件也包含重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7589437/

相关文章:

PHP/MySQL : Retrieving the last *full* weeks entries

php - 下订单并接收附带的reservation_id SQL、PHP、html5 表单

php - 在导航中使用语言按钮切换语言 Wordpress

mysql:反转 LIKE '%foo' 的内容列 - 好的做法?

php - PDO 准备好的语句和 bool 值

javascript - 选择值时获取正确的 var 配置

javascript - "Trickle-down"自定义JavaScript事件

javascript - 使用 React 监听整个 dom 上的点击事件的正确方法是什么?

php - 使用php读取Json数据响应

php - 在 PHP 的 heredoc 中使用变量