我有 600 個 CSV 檔案,大小約為 1Mo,總共大約 600Mo。我想將它們全部放入一個 sqlite3 資料庫中。所以我的第一步是將它們合并到一個大的 csv 中(大約 600Mo 對嗎?),然后再將其匯入 sql db。
但是,當我運行以下 bash 命令時(合并所有檔案,保留一個標題):
cat file-chunk0001.csv | head -n1 > file.csv
for f in *.csv; do cat "`pwd`/$f" | tail -n 2 >> file.csv; done
生成的 file.csv 的大小為38Go,此時行程停止,因為設備上沒有剩余空間。
所以我的問題是:為什么合并后的檔案大小會比預期大 50 倍以上?我該怎么做才能將它們放入大小合理的 sqlite3 db 中?
uj5u.com熱心網友回復:
我想我的第一個問題是:如果您知道如何執行 for 回圈,為什么需要將所有檔案合并到一個 CSV 檔案中?你不能一個接一個地加載它們嗎?
但是你的問題是一個無限回圈。您的通配符 ( *.csv)包含您正在寫入的檔案。您可以將輸出檔案放在不同的目錄中,或者確保您的檔案 glob 不包含輸出檔案(for f in file-*.csv也許)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/467839.html
上一篇:我必須在下一個requestAnimationFrame之前取消AnimationFrame嗎?
下一篇:將CSV檔案轉換為JSON檔案
