PHP,MySQL CSV导入 - 你会怎么做?

时间:2009-12-29 18:08:30

标签: php sql mysql

所以我正在研究一个需要允许用户将CSV文件导入MySQL的PHP​​项目。 CSV文件包含一个具有唯一ID的“列”...有重复项。这里是棘手的部分进入的地方......重复项需要进入一个单独的表而不是主表。

我已编写代码来执行此操作,但必须有一种更有效的方法...现在,脚本读取CSV并且对于每一行,查询数据库以查看ID是否已存在,然后将其放入合适的桌子。这些CSV文件每个包含50k +行,因此这会花费额外的时间......

任何想法都会很棒! 谢谢!

2 个答案:

答案 0 :(得分:2)

将CSV批量加载到MySQL中,然后使用GROUP BY id HAVING COUNT(id) > 1运行查询并将这些行拉出来。

答案 1 :(得分:0)

确保您的MySQL表设置为不接受ID列的重复值,然后执行以下操作:

  1. 运行您的INSERT语句,就像ID不存在一样
  2. 测试回报。如果ID已存在,它将失败
  3. 如果测试失败,请运行新的INSERT语句将记录放入第二个表
  4. 这样,如果98%的记录不是重复记录,您将看不到速度降低,只有少数重复记录将运行额外的测试。