Запрос

patrick1968
Дата: 24.11.2014 15:03:34
Заранее прошу прощения за банальный вопрос, я с PostgreSQL работаю совсем недавно. Каким образом в запросе доставать данные из различных баз данных, например в БД database1 есть таблица table1, а в БД database2 есть - table2, то как правильно написать
FROM table1 t1 join table2 t2 on ... чтобы система правильно нашла требуемые объекты? Заранее благодарен.
rovan
Дата: 24.11.2014 15:11:25
Непосредственно cross-database запросы В PG не поддерживаются
Можно через dblink или Foreign Data Wrapper. Гуглящим воздастся.
Точно нужно из разных БД, а не из разных схем?
patrick1968
Дата: 24.11.2014 15:18:27
нет именно из разных баз данных
/\/\/\/\/\/\
Дата: 24.11.2014 15:35:22
patrick1968,

Судя по формулировке, проще всего выполнить эту задачу будет на клиенте. То есть программой на любимом языке программирования вытаскиваем table1, затем вытаскиваем tabble2. Потом соединяем по нужному правилу.

Не вижу задачи именно для PostgreSQL.
patrick1968
Дата: 24.11.2014 15:44:05
Да я уже думал на эту тему, только запрос у меня через чур мудреный, с группировками и условиями, а таблицы соединять надо на начальном этапе
/\/\/\/\/\/\
Дата: 24.11.2014 15:54:40
patrick1968,

Почему Вы полагаете, что внутри БД произойдет волшебство и запросы перестанут быть мудреными?

Если уж возиться с данными нужно именно внутри PG, то по факту это будет так:
1. В ведущую БД затягиваем данные из сторонней (либо в какуюто постоянную/временную таблицу, либо внешней таблицей - не принципиально).
2. В ведущей БД глумимся над данными непотребным образом.

По задаче не ясно, какая БД будет ведущей, насколько регулярное действие, кто будет потребителем результата (откуда он будет выковиривать результат запроса - явно с ведущей БД).

С учетом неуверенности в собственных силах, я рекомендую Вам первоначальный вариант: вытягиваем все данные на клиент.
Maxim Boguk
Дата: 24.11.2014 16:31:38
patrick1968
Заранее прошу прощения за банальный вопрос, я с PostgreSQL работаю совсем недавно. Каким образом в запросе доставать данные из различных баз данных, например в БД database1 есть таблица table1, а в БД database2 есть - table2, то как правильно написать
FROM table1 t1 join table2 t2 on ... чтобы система правильно нашла требуемые объекты? Заранее благодарен.


см
http://www.postgresql.org/docs/9.3/interactive/dblink.html

но лучше так не делать
это признак неверного дизайна где используются базы на том месте где должны быть схемы
ну и медленно это все относительно нормальных запросов


--Maxim Boguk
www.postgresql-consulting.ru