使用psycopg2将Postgres数据导出到CSV文件(不是一次全部,一次10万行)。当前使用LIMIT OFFSET
,但显然在100M行db上这很慢。有没有更快的方法来跟踪每次迭代的偏移量?
for i in (0, 100000000, 100000):
"COPY
(SELECT * from users LIMIT %s OFFSET %s)
TO STDOUT DELIMITER ',' CSV HEADER;"
% (100000, i)
代码是否在循环中运行,使i
递增
答案 0 :(得分:1)
让我建议您采用另一种方法。
复制整个表,然后将其拆分。像这样:
COPY users TO STDOUT DELIMITER ',' CSV HEADER
最后,从bash中执行split命令(顺便说一句,您可以在python脚本中调用它):
split -l 100000 --numeric-suffixes users.csv users_chunks_
它将生成几个名为users_chunks_1,users_chunks_2等的文件。