我有一个超过2000万行的巨大数据库。我可以导出整个数据库(这需要几个小时),但是当我尝试使用python (pandas)过滤数据时,pycharm失败了(由于内存问题)。
举个例子,有没有办法批量导出数据库,每行200万行?导出2mil,然后导出其他2mil,最后有10个200万行的文件?通过这种方式,我可以使用python (pandas)过滤每个文件,并且不会有内存问题。
谢谢!
发布于 2020-03-16 09:03:50
2000万行并不是很多。除非每个单独的行都很大,或者您通过较慢的网络发送,否则导出应该需要几分钟,而不是几个小时。
如果你想拆分一个表,这是一个更好的复制任务,而不是pg_dump。
psql -c 'copy pgbench_accounts to stdout'|split -l 2000000
您可以在终端命令提示符下输入它,就像使用pg_dump一样。它将像pg_dump一样发送表的数据(除了它只发送数据,并且只发送一个表),但是随后linux命令split
将其分解成文件,每个文件有2e6行。
嗯,我看你在你的帖子里没有特别提到pg_dump。你说“出口”是什么意思?我以为你指的是pg_dump。
发布于 2020-03-16 03:45:58
您可以使用pg_dump仅提取一个或多个表,或者排除表(如果这样做会有所帮助
https://stackoverflow.com/questions/60696669
复制相似问题