我正在使用 PostgreSQL 9.1。我需要将所需的列从一个数据库的一个表转移到另一个数据库的另一个表中,而不是模式。
我发现 dblink.sql 文件必须在 share/contrib 中。但是我的 contrib 文件夹是空的。我在哪里可以下载 dblink.sql 文件并可以执行我的查询?

当我现在执行查询时,它显示一条错误消息:

cross database reference is not possible ...

谁能帮我如何在两个数据库之间传输数据?

最佳答案

将软件包安装到系统 as detailed in the related question 后,将 extension dblink 安装到数据库中(运行此代码的数据库,外部数据库不需要它):

CREATE EXTENSION dblink;

你可以找到 code examples in the manual
这是我用来在 dbs 之间复制数据的简单版本:
一、create a FOREIGN SERVER
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql 在我的情况下是预先安装的。
然后创建打开连接、删除旧数据(可选)、获取新数据、运行 ANALYZE 并关闭连接的函数:
CREATE OR REPLACE FUNCTION f_tbl_sync()
  RETURNS text AS
$BODY$
SELECT dblink_connect('mydb');  -- USER MAPPING for postgres, PW in .pgpass

TRUNCATE tbl;  -- optional

INSERT INTO tbl
SELECT * FROM dblink(
  'SELECT tbl_id, x, y
   FROM   tbl
   ORDER  BY tbl_id')
    AS b(
 tbl_id int
,x int
,y int)

ANALYZE tbl;

SELECT dblink_disconnect();
$BODY$
  LANGUAGE sql VOLATILE;

关于postgresql - 使用 dblink.sql 在 PostgreSQL 中的两个表之间复制数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14797327/

10-13 08:08
查看更多