繁体   English   中英

上载csv文件并检查重复行的最佳方法

[英]Best approach when uploading csv files, and check for duplicated lines

您好,我正在构建一个php页面,在这里我可以从信用卡终端上载一些csv文件,以显示商店的所有者,今天的销售情况以及进行一些统计。 我在数据库中使用MYISAM。

这只是csv文件中的一行,以显示我要使用的信息。

交易日期:2014年5月22日00:00:12;

商店:MCdonalds_denmark;

终端POS:00008101;

最后一次上演人数:138;

主机代码:88135;

PAN:4571xxxxxxxxxxxxxx5362;

操作:授权要求;

POS数据代码:5-ICC;

数量:70;

收单方:SDID;

交易结果:已批准;

如何避免在MySQLi数据库中出现重复值,如果用户无意中两次上传了csv文件,则文件名并不是真正唯一的,现在我正在用mysql命令检查每一行(如果不存在),但是大约需要8分钟,当我使用mysqli命令NOT EXIST时,用500.000行上传一个csv文件。

我可以看到表越大,上载运行的速度就越慢? 随着时间的推移,桌子只会越来越大。

是否有更好的选择,例如晚上运行cronjob来查找重复项,还是避免两次上载相同文件的用户问题?

是否有其他完全不同的工作方法来解决问题?

第一件事 你这样做吗?

直到线

读取行-将数据保存到数据库;

阅读下一行

如果是这样...首先“一次”执行此操作。

收集所有行,将其拆分为可负担的Update语句块,然后大规模运行它们。

这样可以节省您很多时间。

重复-如果遇到严重的性能问题-我将按原样添加所有内容,并执行cron任务来清理表。

我发现了一个解决速度问题的方法,我在所有列上建立索引,并在其中添加了“ WHERE”子句,并且我没有更改PHP脚本中的任何sql命令,它减少了执行时间,从15分钟至10秒。

在列上运行索引

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM