【发布时间】:2020-09-21 12:10:10
【问题描述】:
我正在尝试将一些大型数据集从 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 Server,所以寻找关于在哪里查看的提示,或者要打开哪些额外的日志记录,或者任何其他可以帮助弄清楚为什么这个过程的提示正在停止。
【问题讨论】:
-
这张表有外键约束吗?
-
是的,有几个。我在另一张桌子上确实有几个成功的记录有 1 亿条记录。但也许是因为第二个1亿记录表对第一个有外键?
-
它将外键排队并在最后检查它们,因此在执行此操作时您不会看到任何写入活动。
-
删除外键,插入所有数据,然后重新添加外键会更好吗?
-
@jjanes 成功了,没有快速加载 FK 的东西并且将它们添加回来并不需要太长时间。如果您将其写在答案中,我会给您功劳。
标签: postgresql psql