Deadlock condition

ДБ Линк в PostgreSQL 8.3 с пакета contrib

Недавно столкнулся с задачей где нужно было сгенерировать отчет с двух баз.
И в одной базе была таблица с соответствующими полями с таблицей из второй базы.

Допустим у нас есть база с названиями test1 и test2, и есть пакет contrib (его можно скачать с официального сайта postgresql.org/). По умолчанию пакет входит в состав инсталятора postgresa версии 8.3, его можно посмотреть в каталоге c:\program files\PostgreSQL\8.3\share\contrib (ОС MS Windows). Оттуда мы можем найти sql файл dblink.sql, запустим его через консоль с помощью пакета psql: psql -U <dbase user> -d <data base> -f <sql file> , в моем случае psql -U postgres -d test1 -f dblink.sql /

Сам запрос выглядит так:
select nm, code, count, sum from (select t_id, count('pk'), sum(cost)
from table_t1 c
where (t_id = '2' or t_id = '3' or t_id = '22') 
group by t_id) as c
natural join
(select * from dblink('dbname=test2', 
'select id_t2, name || '' - '' || lastname, code from table_t2' ) as t(t_id bigint, nm text, code text)) as t
order by count desc)


Если вы сменили пароль на базу или порт, то его можно указать следующим образом :
dblink('dbname=test2 password=mypass port=5432',...)


Comments