gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:20:32 25 4
gpt4 key购买 nike

我有一个生产数据库,比方说,有一千万行。我想从过去一个小时的生产中提取大约 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 HEADERSTDIN CSV HEADER 而不是 STDOUTSTDIN,但我还没有尝试过。

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

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

关于sql - 在 Postgres 中,将表行的子集从一个数据库复制到另一个数据库的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/414849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com