我过去曾多次使用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
答案 0 :(得分:0)
dblink
还发货dblink_build_sql_insert
,这似乎完全符合您的要求。
dblink_build_sql_insert
在进行选择性复制时非常有用 一个本地表到远程数据库。它从本地选择一行 表基于主键,然后构建一个SQLINSERT
命令 将复制该行,但主键值替换为 最后一个参数中的值。 (要制作行的精确副本, 只为最后两个参数指定相同的值。)
还有一个代码示例。
对于整个表,我会在远程数据库中运行dblink并获取数据,因为dblink主要用于在远程数据库中执行查询& #34 ;.
如果仅限于推送数据,我现在只能想到plpgsql函数中的循环。