簡體   English   中英

我應該如何通過nodejs將大量數據導入mysql?

[英]How should I import a large amount of data to mysql via nodejs?

我正在構建一個自定義導入工具,並想知道導入大量數據的最佳實踐是什么。 我具有以下JSON數據結構,每次導入30天中最少要有500種產品。

"rows": [{
        "product_uid": "k110",
        "sale_date": "2018-06-06",
        "amount": 15
    }, {
        "product_uid": "k111",
        "sale_date": "2018-06-06",
        "amount": 22
    }, {
        "product_uid": "k110",
        "sale_date": "2018-06-07",
        "amount": 30
    }
]

該表的架構如下:

daily_sales_id - product_uid - sale_date - amount

我正在使用nodejs mysql在單個連接中執行多個SQL語句。 它適合第一次插入行,但在隨后的嘗試中,它將插入重復的行。 我可以在插入之前截斷表,但是如果用戶決定導入增量快照而不是整個記錄,則此操作將失敗。

盡管我可以進行for循環來檢查記錄是否存在,並執行更新而不是插入操作,但是遍歷15,000多個記錄並創建15,000+的select連接似乎不是一個好主意。

還有其他選擇可以保持數據結構並執行更新/插入而無需遍歷15,000多個記錄嗎? 導入的csv文件不知道daily_sales_id。

這里的一種選擇是在列上添加一個唯一索引,該索引將表中的記錄定義為重復記錄,如下所示:

CREATE UNIQUE INDEX your_idx ON yourTable(product_uid, sale_date);

這樣做的最終結果是,試圖在表中已經存在的product_uid / sale_date組合中添加新記錄的插入操作將在數據庫級別失敗。 當然,您將需要一些Node.js代碼來處理此問題,但這並不難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM