国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php - laravel中導(dǎo)入excel 資料量很大的情況下 處理重複資料時如果做最好
世界只因有你
世界只因有你 2017-05-16 12:58:18
0
2
1213

用laravel excel導(dǎo)入使用者的excel
能夠預(yù)期到的一個excel大概會有幾千到幾萬條不等。
需要判斷不導(dǎo)入重複的用戶,例如導(dǎo)入10000人 資料庫裡面已經(jīng)有100人了 那麼這100人需要被判斷出來 做另外的邏輯處理。另外9900人導(dǎo)入。並且記錄9900的插入狀態(tài) 例如成功8000筆 失敗1900條。想在想到幾個方案 不知道哪個比較合理
1、傳統(tǒng)的批量的插入方法,無法精確到每條數(shù)據(jù)是否重複或記錄返回狀態(tài)。但是效率應(yīng)該是比較高的。
2、用for循環(huán) 插入前 先查詢?nèi)会崾欠翊嬖?然後插入完再記錄狀態(tài) 從業(yè)務(wù)邏輯上是最能符合需求的 但是效率很低,估計很容易就要500錯誤或者timeout。
3、在2的基礎(chǔ)上改進(jìn) 把整個過程寫入隊列 chunk分組後 進(jìn)隊列 然後後臺處理。缺點就是使用者相對來說體驗比較差,不能立等可取 還需要配合通知系統(tǒng)來做這個。
4、查了下 還有種是用事務(wù) 分塊提交,不知道這種如何 還沒有測試。也請各位大大指教。

不知道各位大大還有什麼更好的辦法。能夠在效率和邏輯中都比較平衡的。感謝了

世界只因有你
世界只因有你

全部回覆(2)
過去多啦不再A夢

看題目的意思,我理解是
1、excel 上傳
2、excel 分析,入庫
3、回傳資料給使用者

整個過程,應(yīng)該是比較耗時的,可以給使用者【處理中】的狀態(tài),後臺處理,等完全處理好之後,輸出結(jié)果。

至於判斷是否重複用戶,記錄成功失敗的狀態(tài),可以考慮先存入 redis 會比較快,最後所有結(jié)果 入庫 處理

大家講道理

說下我的思路,不喜勿噴.

假設(shè)資料庫和excel中唯一的識別為使用者身分證號碼:

  • 將資料庫中現(xiàn)有的身分證號查出來,

  • Excel上傳之後,遍歷每一行,並判斷當(dāng)前這一資料中的身分證號是否在資料庫中查出來的是數(shù)組中

  • 如果不在,寫入資料庫,並在查出來的陣列中追加這個身分證號,

  • 如果在,跳過

我這邊線上環(huán)境,一次上傳一個5w+行的Excel文件,等待時間也就6秒左右.
當(dāng)然,每個線上環(huán)境和Excel文件的單行列數(shù)是不一樣的,
僅供樓主參考.

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板