将数据从Postgres 9.2推送到远程数据库

时间:2014-03-13 22:45:28

标签: postgresql postgresql-9.2 sql-insert dblink

我过去曾多次使用dblink将远程数据库中的信息提取到本地数据库中。但是,我发现自己想做相反的事情。我想从当地推到遥远的地方。根据文档,我知道你可以做到:

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

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

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

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

但是,找不到任何如何完成这项任务的例子。

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

目前正在使用PostgreSQL 9.2

1 个答案:

答案 0 :(得分:0)

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

Per documentation:

  

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

还有一个代码示例。

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