2014-03-13 32 views
1

我用DBLINK多次在过去从远程数据库中提取信息到本地一个。但是,我发现自己想做相反的事情。我想从本地PUSH到远程。每文档,我知道你可以做:从Postgres的9.2推送数据到远程数据库

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

回答

0

dblink还附带dblink_build_sql_insert,这似乎正好满足您的需求。

Per documentation:

dblink_build_sql_insert可以在执行本地表中的选择性复制 到远程数据库有用。它选择基于主键当地 表中的一行,然后建立一个SQL INSERT吩咐 将复制该行,但与 值中的最后一个参数更换了主键值。 (要进行该行的精确复制, 只需为最后两个参数指定相同的值。)

还有一个代码示例。

对于整个表我将在远程分贝运行DBLINK和中的数据,因为dblink的是主要用于“在远程数据库中执行查询”。
如果仅限于的数据,我只能认为在PLPGSQL功能的环路的现在。

+0

是的。我看到了。但是,这又是一个记录或声明。如果你想通过结果集来完成,你将如何实现?在函数中循环? –

+0

@DavidS:为此添加了一些东西。 –

+0

谢谢。这不是整个桌子。也许有几千条记录。我可以用dfw完成这个吗? –