我有一个生产数据库,比如说有一千万行。我想从过去一小时的生产中提取大约 10,000 行,并将它们复制到我的本地盒子中。我怎么做?
假设查询是:
SELECT * FROM mytable WHERE date > '2009-01-05 12:00:00';
如何获取输出,将其导出到某种转储文件,然后将该转储文件导入到数据库的本地开发副本中——尽可能快速、轻松?
Source:
psql -c "COPY (SELECT * FROM mytable WHERE ...) TO STDOUT" > mytable.copy
目的地:
psql -c "COPY mytable FROM STDIN" < mytable.copy
这假设 mytable 在源和目标中具有相同的架构和列顺序。如果不是这种情况,您可以尝试STDOUT CSV HEADER
and STDIN CSV HEADER
代替STDOUT
and STDIN
,但我没试过。
如果 mytable 上有任何自定义触发器,则可能需要在导入时禁用它们:
psql -c "ALTER TABLE mytable DISABLE TRIGGER USER; \
COPY mytable FROM STDIN; \
ALTER TABLE mytable ENABLE TRIGGER USER" < mytable.copy
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)