首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Postgres中,将表行的子集从一个数据库复制到另一个数据库的最佳方法是什么?

问在Postgres中,将表行的子集从一个数据库复制到另一个数据库的最佳方法是什么?
EN

Stack Overflow用户
提问于 2009-01-05 23:06:37
回答 4查看 6.3K关注 0票数 7

我有一个生产数据库,比如说,有一千万行。我想从过去一个小时的生产过程中提取出大约10,000行,并将它们复制到我的本地机器中。我该怎么做?

假设查询是:

代码语言:javascript
复制
SELECT * FROM mytable WHERE date > '2009-01-05 12:00:00';

如何获取输出,将其导出为某种转储文件,然后将该转储文件导入到数据库的本地开发副本中--尽可能快速、轻松?

EN

回答 4

Stack Overflow用户

发布于 2011-07-09 01:09:50

来源:

代码语言:javascript
复制
psql -c "COPY (SELECT * FROM mytable WHERE ...) TO STDOUT" > mytable.copy

目的地:

代码语言:javascript
复制
psql -c "COPY mytable FROM STDIN" < mytable.copy

这假设mytable在源和目标中具有相同的模式和列顺序。如果不是这样,您可以尝试STDOUT CSV HEADER和STDIN CSV HEADER,而不是STDOUT和STDIN,但我还没有尝试过。

如果您在mytable上有任何自定义触发器,您可能需要在导入时禁用它们:

代码语言:javascript
复制
psql -c "ALTER TABLE mytable DISABLE TRIGGER USER; \
         COPY mytable FROM STDIN; \
         ALTER TABLE mytable ENABLE TRIGGER USER" < mytable.copy
票数 10
EN

Stack Overflow用户

发布于 2009-01-06 09:39:55

源服务器:

代码语言:javascript
复制
BEGIN;

CREATE TEMP TABLE mmm_your_table_here AS
    SELECT * FROM your_table_here WHERE your_condition_here;

COPY mmm_your_table_here TO 'u:\\source.copy';

ROLLBACK;

您的本地邮箱:

代码语言:javascript
复制
-- your_destination_table_here must be created first on your box

COPY your_destination_table_here FROM 'u:\\source.copy';

文章:http://www.postgresql.org/docs/8.1/static/sql-copy.html

票数 4
EN

Stack Overflow用户

发布于 2009-01-05 23:27:14

在psql中,您只需将copy与您给出的查询一起使用,将其导出为CSV (或其他格式),使用\c切换数据库并导入它。

在psql中查看\h copy。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/414849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档