插入大量数据[PHP,MySQL]

时间:2012-05-14 08:38:18

标签: php mysql

我有一个大数据集到MySQL(用户,公司,联系人)?约有100万条记录。

现在我需要从导入文件(csv)导入大约100000条记录的新用户,公司,联系人。我从文件中记录了所有三个要素(用户,公司,联系人)的所有信息。 此外,在生产中我不能使用LOAD DATA(只是没有这么多的权利:()。

因此,应该对该数据集应用三个步骤。 - 与现有的DB数据进行比较 - 更新它(如果我们将在上一步找到一些东西) - 并插入新的记录

我在服务器上使用php来做到这一点。我可以看到两种方法:

  • 立即从文件中读取所有数据,然后使用此BIG阵列并应用这些步骤。
  • 或从文件中逐行读取并通过每一行完成步骤

哪种方法更有效?按CPU,内存或时间使用

我可以使用交易吗?或者它会减慢整个生产系统的速度?

感谢。

3 个答案:

答案 0 :(得分:2)

CPU时间/时间不会有很多,尽管读取整个文件的时间更快。但是,对于这么大的数据集,将所有记录读入内存所需的额外内存将大大超过时间优势 - 我肯定会一次处理一行。

答案 1 :(得分:0)

您是否知道phpMyAdmin具有针对大型SQL文件的“可恢复导入”的漂亮功能?

只需检查部分导入部分中的“允许导入中断”。瞧,PhpMyAdmin将停止并循环,直到所有请求都被执行。

仅仅“使用工具”而不是“重新发明轮子”可能更有效率

答案 2 :(得分:0)

我认为,第二种方法更容易接受:

  1. 创建更改列表(它将是一个单独的表)
  2. 逐行进行更新(例如,使用“updflag”字段将每行标记为已更新)
  3. 使用交易在后台执行此过程。