Postgresql psql copy命令与大型CSV数据集挂起

Postgresql psql copy命令与大型CSV数据集挂起,postgresql,psql,Postgresql,Psql,我正在尝试将一些大型数据集从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 P

我正在尝试将一些大型数据集从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"
使用这种方法,我能够加载一堆大小不同的文件,其中一个压缩了1亿条记录,压缩了700MB。但是,我又有一个压缩了1亿条记录的大文件,压缩了1GB左右,出于某种原因,这个文件让我很伤心。基本上,psql进程一直在运行,从未停止过。我可以从数据f中看出它会生成数据,直到某个点,但在某个点它会停止增长。我在一个名为17955、17955.1、17955.2等的数据文件夹中看到6个文件。直到17955.5。这些文件上的日期修改日期会继续更新,但它们的大小没有增长,我的psql程序就停在那里。如果我关闭这个过程,我会丢失所有数据,因为我假设它在进程未运行到完成时回滚数据


我查看了data/log文件夹中的日志,其中似乎没有任何有意义的内容。我不能说我非常习惯Postgres,我使用的SQL Server最多,因此,我想了解有关在何处查找日志的提示,或者需要打开哪些额外的日志记录,或者其他任何有助于了解此过程为何会暂停的提示。

多亏了@jJane的上述评论(遗憾的是,他/她没有添加答案)。我将1亿条记录添加到一个具有外键的表中,然后添加到另一个具有1亿条记录的表中。我删除了外键,添加了记录,然后重新添加了外键,这就成功了。我想,对于如此大的批量插入,检查外键太多了。

此表是否有外键约束?是的,several。我在另一个表中有几个记录有1亿条成功记录。但可能是因为第二个1亿条记录表有一个外键指向第一个记录表?它将外键排队,并在最后检查它们,因此在执行此操作时,您不会看到任何写入活动。删除记录会让事情变得更好吗外键,插入所有数据,然后重新添加外键?@jjanes成功了,没有FKs,加载速度很快,添加回来的时间不会太长。如果你在回答中写上这些,我会给你评分。