簡體   English   中英

使用事務將巨大的 CSV 文件導入 MySQL

[英]Import a huge CSV file into MySQL using a transaction

所以我們的想法是使用 Node.JS 完成這項工作,但任何其他編程語言/平台都可能有所幫助,因為程序應該很簡單。

問題:

該程序必須定期從需要導入 MySQL 的 FTP 服務器下載 CSV 文件。

挑戰:

  • 這些 CSV 文件有時可能包含數百萬行,我們需要防止內存耗盡。

  • 如果導入失敗,應該有回滾(SQL 事務?)。

  • 我們需要修改正在導入的數據。

我知道一個名為“fast-csv”的 NodeJS 包,它實現了讀取流以防止高內存使用。 這可能是答案。 問題是我沒有找到任何允許我將數據作為流導入 MySQL使用事務來允許回滾的庫。

關於在這種情況下使用什么的任何想法? 正如我所說,它不一定是一個 NodeJS 程序。

您應該在事務中使用LOAD DATA 如果您的庫沒有本機支持,請查看您是否可以直接對數據庫執行查詢。

類似的東西:

START TRANSACTION;

LOAD DATA INFILE '/tmp/yourfile.csv' INTO TABLE yourtable
FIELDS TERMINATED BY ',';

UPDATE yourtable SET col1=col2*3;

COMMIT;

LOAD DATA 本身已經允許基本操作作為加載的一部分。 執行語句時只需檢查它們是否成功,並在失敗時使用ROLLBACK中止。

暫無
暫無

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

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