我在转移一张非常大的桌子时被打断了。我怎样才能从它停止的地方拿起它?

UXk*_*EZ7 6 postgresql sql-server count

我编写了一个 python 脚本来在不同数据库(从 SQL Server 到 Postgres)的表之间选择和插入行。该表有大约 2000000000 行,传输停止在它中间的某个地方。我尝试选择具有偏移量的行作为已传输的行数。但是 count(*) 占用了太多的服务器资源,当我尝试时服务器变得无响应。(内存使用量在很短的时间内从 100MB 上升到 ~8GB)

我想知道是否有办法从它停止的地方提取转移。转移我目前在 Postgres 中拥有的行数大约需要 3 天时间。

谢谢。


另外,我知道大概的行数。所以也许我可以做这样的事情:如果有大约 12392320 行,删除第 12390000 行之后的所有内容,然后从 12390001 开始。这样的事情可能吗?

Con*_*lls 8

另一种观点:

你真的使用插入 2B 行吗?批量加载数据可能会更好。2B 行不应该需要 3 天,除非它们非常宽。

此外,pg_bulkload可能对此感兴趣。

  • 您应该能够导出为一系列 .CSV 文件(或其他一些合适的格式)。然后使用批量加载工具导入它们。它将比选择/插入快几个数量级。 (3认同)