Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Postgresql межбазовый insert

#postgresql


Имеется две базы postgresql, например dbA и dbB. Необходимо сделать insert-запрос
из dbA в dbB. Обычно это делается с помощью dblink вида

-- На dbB
insert into ...
select from dblink('коннект к dbA','select запрос')


Второй вариант, "одно в другом"

-- На dbA
dblink_exec('коннект к dbB', 
'insert into ... select from dblink('коннект к dbA','select запрос')')'


Но есть проблемка: Доступ от dbB к dbA запрещён на уровне сети, а наоборот разрешен.
Есть ещё способы это провернуть в одностороннем порядке?
    


Ответы

Ответ 1



Второй вариант не заработает, так как вложенный dblink выполняется на удаленном сервере, а в вашем случае доступа от dbB к dbA нет. Массовый insert сделать не получится. В вашем случае нужно в базе bdB пройти курсором по всем записям вашего select и по значениям каждой строки строить insert и выполнять через execute. То есть должна формироваться строка вида: dblink('коннект к dbB','insert into tmp (a,b) values (значение a, значение b)')

Комментариев нет:

Отправить комментарий