PostgreSQL объединяет 2 базы данных - PullRequest
2 голосов
/ 09 июня 2011

Я новичок в PostgreSQL. У меня есть 2 базы данных в PostgreSQL 9.0, db1 и db2, а с db2 у меня есть доступ только для чтения. Я хочу создать хранимую функцию, которая в противном случае могла бы быть легко выполнена с помощью JOIN или вложенного запроса, чего PostgreSQL не может делать в разных базах данных.

В db1 у меня есть таблица1, где я могу запросить набор ключей внешних ключей, которые я могу использовать для поиска записей в таблице2 в db2, что-то вроде:

SELECT * from db2.table2 WHERE db2.table2.primary_key IN (
    SELECT db1.table1.foreign_key FROM db1.table1 WHERE
        db1.table1.primary_key="whatever");

Какая лучшая практика для этого в Postgres? Я не могу использовать временные таблицы в db2, и передача внешних ключей в качестве параметра хранимой функции, выполняющейся в db2, не кажется хорошим решением.

Примечание: все ключи VARCHAR (11)

1 Ответ

5 голосов
/ 09 июня 2011

Вы захотите заглянуть в db_link contrib.

Кроме того, если вы знакомы с C, есть также симпатичная функциональность, называемая сторонними упаковщиками данных . Это позволяет манипулировать практически любым источником, используя простой SQL. Пример с Twitter :

SELECT from_user, created_at, text FROM twitter WHERE q = '#postgresql';
...