【问题标题】:Pushing data from Postgres 9.2 to a remote database将数据从 Postgres 9.2 推送到远程数据库
【发布时间】:2014-04-19 00:16:16
【问题描述】:

我过去曾多次使用 dblink 将信息从远程数据库提取到本地数据库。然而,我发现自己想做相反的事情。我想从本地推送到远程。根据文档,我知道您可以这样做:

SELECT dblink_exec('myconn', 'insert into foo values(21,''z'',''{"a0","b0","c0"}'');');

但是,在上面的示例中,插入是一个字符串。

我想做的是更有活力。我想做类似的事情:

INSERT INTO remote_table
SELECT a, b, c FROM local_table;

但是,找不到任何如何完成此任务的示例。

实现这一目标的最佳方法是什么?这是使用 postgres_fdw(我从未使用过)的情况吗?

当前使用 PostgreSQL 9.2

【问题讨论】:

    标签: postgresql postgresql-9.2 sql-insert dblink


    【解决方案1】:

    dblink 还提供dblink_build_sql_insert,这似乎完全符合您的要求。

    Per documentation:

    dblink_build_sql_insert 可用于进行选择性复制 将本地表迁移到远程数据库。它从本地选择一行 基于主键的表,然后构建一个 SQLINSERT 命令 将复制该行,但主键值替换为 最后一个参数中的值。 (要制作该行的精确副本, 只需为最后两个参数指定相同的值。)

    还有一个代码示例。

    对于整个表,我会在远程数据库中运行 dblink 并获取数据,因为 dblink 主要用于“在远程数据库中执行查询”。 如果仅限于 push 数据,我现在只能想到 plpgsql 函数中的循环。

    【讨论】:

    • 是的。我看到了。但是,它同样适用于 1 条记录或声明。如果你想在一个结果集上做这件事,你会如何完成?在函数中循环?
    • @DavidS:为此添加了一些东西。
    • 谢谢。这不是整张桌子。可能有几千条记录。我可以用 dfw 完成这个吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2019-07-04
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多