2013-06-26 5 views
2

У меня 2 дБ на том же сервере с тем же пользователем:выполнить объединение по 2 DB

  • ckan_default
  • datastore_default

Отношение ckan_default является:

Schema |    Name    | Type | Owner 
-------+-------------------------------+-------+---------- 
public | resource      | table | ckanuser 
public | resource_group    | table | ckanuser 
public | package      | table | ckanuser 
.... 

Отношение datastor e_default является:

Schema |     Name     | Type | Owner 
    -------+--------------------------------------+-------+---------- 
    public | 1bc7932e-2507-467b-8c12-c9f321b760f7 | table | ckanuser 
    public | 449138df-e089-41f2-8939-dcee53a31bc1 | table | ckanuser 
    public | 7235f781-1b16-4abf-ac04-8d68fa62e432 | table | ckanuser 
    .... 

Я не буду присоединиться к БД на 2 ckan_default.resource.id = datastore_default "НАЗВАНИЕ ОТНОШЕНИЮ"..

Как?

+0

Возможный дубликат [Читать данные из другой базы данных postgres] (http://stackoverflow.com/questions/17275598/read-data-from-other-postgres-database) –

ответ

3

Я не думаю, что вы можете.

Вы можете использовать расширение dblink для запроса базы данных B от A, но запрос будет отделен от контекста данных базы данных A .. так работает postgresql.

EDIT: вы можете заполнить вид из результата запроса DBLink, а затем использовать его:

CREATE VIEW myremote_pg_proc AS 
    SELECT * 
    FROM dblink('dbname=postgres', 'select proname, prosrc from pg_proc') 
    AS t1(proname name, prosrc text); 
SELECT * FROM myremote_pg_proc WHERE proname LIKE 'bytea%'; 

Примеры в ссылке я разместил.

1

PL/Proxy - еще один вариант, аналогичный dblink. Я использовал его в прошлом для разговора между серверами, где мой прецедент был распределенным кластером базы данных бедного человека. Данные на других серверах были загружены для некоторых крупных отчетов, и это работало довольно хорошо. Однако серверы были в одном столбце, поэтому, если другие базы данных географически распределены, вы будете платить дополнительный штраф за сетевую задержку и время передачи данных.