我有一个大表 (postgre_a
),它有 100 列的 1 亿条记录。我想将这些数据复制到同一个表中。
我试着用sql来做这件事
INSERT INTO postgre_a 选择 i1 + 100000000, i2, ... FROM postgre_a;
但是,此查询现在运行了 10 多个小时...所以我想更快地执行此操作。我尝试用 copy
来做到这一点,但我找不到在查询中使用 copy from
语句的方法。
有没有其他方法可以更快地做到这一点?
最佳答案
您不能直接在 COPY FROM
中使用查询,但也许您可以使用 COPY FROM PROGRAM
和查询来执行您想要的操作:
COPY postgre_a
FROM PROGRAM '/usr/pgsql-10/bin/psql -d test'
' -c ''copy (SELECT i1+ 100000000, i2, ... FROM postgre_a) TO STDOUT''';
(当然,您必须用您的值替换 psql
的路径和数据库名称。)
我不确定这是否比使用 INSERT
更快,但值得一试。
您一定要在操作前删除所有索引和约束,然后再重新创建它们。
关于postgresql - 如何尽快使用查询将批量数据从表加载到表? (postgresql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51355033/