【问题标题】:Best approach when uploading csv files, and check for duplicated lines上传 csv 文件并检查重复行时的最佳方法
【发布时间】:2014-06-30 17:42:38
【问题描述】:

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

这只是 csv 文件中的一行,用于显示我要处理的信息。

交易日期:22-05-2014 00:00:12;

商店:MCdonalds_denmark;

终端POS:00008101;

最后一个操作数:138;

主机代码:88135;

PAN:4571xxxxxxxxxxx5362;

操作:授权请求;

POS 数据代码:5 - ICC;

数量:70;

收单方:SDID;

交易结果:通过;

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

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

是否有更好的选择,例如在晚上运行 cronjob 来查找重复项,或者避免两次上传同一个文件只是用户的问题。

有没有其他完全不同的工作方法来解决这个问题??

【问题讨论】:

标签: php mysql sql csv


【解决方案1】:

第一件事。你会这样吗:

直到行

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

阅读下一行

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

收集所有行,将其拆分为可负担的更新语句块并大规模运行。

这将为您节省很多时间。

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

【讨论】:

    【解决方案2】:

    我找到了一个解决速度问题的解决方案,我正在索引所有列,其中我有“WHERE”子句,并且我没有更改我的 php 脚本中的任何 sql 命令,它记下了,执行时间,从 15 分钟缩短到 10 秒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 2011-05-21
      • 2016-01-02
      • 2011-10-09
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多