加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 在Postgres中将表的行子集从一个数据库复制到另一个数据

发布时间:2020-12-12 06:50:34 所属栏目:MsSql教程 来源:网络整理
导读:我有一个生产数据库,比如一千万行.我想从生产过去一小时中提取10,000行左右,然后将它们复制到我的本地方框中.我怎么做? 假设查询是: SELECT * FROM mytable WHERE date '2009-01-05 12:00:00'; 如何获取输出,将其导出到某种转储文件,然后将该转储文件导入到
我有一个生产数据库,比如一千万行.我想从生产过去一小时中提取10,000行左右,然后将它们复制到我的本地方框中.我怎么做?

假设查询是:

SELECT * FROM mytable WHERE date > '2009-01-05 12:00:00';

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

解决方法

资源:
psql -c "COPY (SELECT * FROM mytable WHERE ...) TO STDOUT" > mytable.copy

目的地:

psql -c "COPY mytable FROM STDIN" < mytable.copy

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

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

psql -c "ALTER TABLE mytable DISABLE TRIGGER USER; 
         COPY mytable FROM STDIN; 
         ALTER TABLE mytable ENABLE TRIGGER USER" < mytable.copy

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读