2009-12-29 53 views
0

因此,我正在开发一个PHP项目,该项目需要允许用户将CSV文件导入到MySQL中。 CSV文件包含一个带有唯一ID的“列”......有重复的内容。这里是棘手的部分进来...重复需要进入一个单独的表,而不是进入主表。PHP,MySQL CSV导入 - 你会怎么做?

我已经编写了代码来做到这一点,但必须有一个更有效的方法......现在,脚本读取CSV并为每一行查询数据库以查看ID是否已存在,然后将其放入在适当的表格中。这些CSV文件每个包含50k +行,所以这会花费额外的时间...

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

+2

建议是一样的上次你问:http://stackoverflow.com/questions/1965001/mysql-duplicates-with-load-data-infile –

回答

2

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

0

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

  1. 运行您INSERT语句,如果ID不存在
  2. 测试返回。如果该ID已经存在
  3. 如果测试失败它会失败,运行新的INSERT声明把记录到你的第二个表

这样,如果您的记录98%不重复,你将看不到速度下降,并且只有少数重复项会执行额外的测试。