[英]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.