postgresql - 如何尽快使用查询将批量数据从表加载到表? (postgresql)

标签 postgresql select insert copy

我有一个大表 (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/

相关文章:

postgresql - 如何永久关闭postgres的自动提交

postgresql - PropelBundle 数据库 :create for postgres

mysql - SQL 错误代码 1066 唯一别名

mysql - 在 MySQL 中使用子查询进行多次插入

mysql - 如果相关行不存在则插入

sql-server - Postgres 和 MS SQL Server 上的相同变更日志

python - 使用 Django 1.8 部署时出现应用程序错误

html - 我可以将元素嵌套在表单的选择标签中吗?

jquery - Select2 从过滤列表中选择所有选项以进行多重选择

xml - 甲骨文PLSQL : how to parse XML and insert into table