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