2014-03-13 72 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完成這個嗎? –