#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)')
Комментариев нет:
Отправить комментарий