所以我正在研究一个需要允许用户将CSV文件导入MySQL的PHP项目。 CSV文件包含一个具有唯一ID的“列”...有重复项。这里是棘手的部分进入的地方......重复项需要进入一个单独的表而不是主表。
我已编写代码来执行此操作,但必须有一种更有效的方法...现在,脚本读取CSV并且对于每一行,查询数据库以查看ID是否已存在,然后将其放入合适的桌子。这些CSV文件每个包含50k +行,因此这会花费额外的时间......
任何想法都会很棒! 谢谢!
答案 0 :(得分:2)
将CSV批量加载到MySQL中,然后使用GROUP BY id HAVING COUNT(id) > 1
运行查询并将这些行拉出来。
答案 1 :(得分:0)
确保您的MySQL表设置为不接受ID
列的重复值,然后执行以下操作:
INSERT
语句,就像ID不存在一样INSERT
语句将记录放入第二个表这样,如果98%的记录不是重复记录,您将看不到速度降低,只有少数重复记录将运行额外的测试。