繁体   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