簡體   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