簡體   English   中英

psql 復制命令與大型 CSV 數據集掛起

[英]psql copy command hangs with large CSV data set

我正在嘗試將一些大型數據集從 CSV 加載到 Postgres 11 數據庫(Windows)中以進行一些測試。 我遇到的第一個問題是 CSV 非常大,我收到此錯誤:“錯誤:無法統計文件”'D:/temp/data.csv'未知錯誤“。所以在搜索后,我找到了加載數據的解決方法來自 zip 文件。所以我設置了 7-zip 並能夠使用如下命令加載一些數據:

psql -U postgres -h localhost -d MyTestDb -c "copy my_table(id,name) FROM PROGRAM 'C:/7z e -so d:/temp/data.zip' DELIMITER ',' CSV"

使用這種方法,我能夠加載一堆不同大小的文件,其中一個包含 700MB 壓縮的 1 億條記錄。 但后來我又多了一個包含 1 億條記錄的大文件,壓縮后的大小約為 1GB,由於某種原因,這個文件讓我很傷心。 基本上,psql 進程只是保持運行,永不停止。 我可以根據數據文件的增長看到它生成的數據直到某個點,但在某個點它停止增長。 我在名為 17955、17955.1、17955.2 等的數據文件夾中看到 6 個文件,直到 17955.5。 這些文件的日期修改日期繼續更新,但它們的大小並沒有增長,我的 psql 程序就在那里。 如果我關閉進程,我會丟失所有數據,因為我假設當進程沒有運行完成時它會回滾。

我查看了 data/log 文件夾中的日志,那里似乎沒有任何意義。 我不能說我非常習慣 Postgres,我最常使用 SQL 服務器,所以尋找關於在哪里查看的提示,或者打開哪些額外的日志記錄,或者任何其他可以幫助弄清楚為什么這個過程的提示正在停頓。

感謝上面的@jjanes 評論(遺憾的是他/她沒有添加答案)。 我正在將 1 億條記錄添加到具有外鍵的表中,然后將其添加到具有 1 億條記錄的另一個表中。 我刪除了外鍵,添加了記錄,然后重新添加了外鍵,就成功了。 我想用這種大小的批量插入檢查外鍵太多了。

暫無
暫無

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

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