2010-03-16 3 views
0

Я нахожусь в Postgres и имею две базы данных на одной машине, и я хотел бы переместить некоторые данные из базы данных Source в базу данных Dest.Перемещение информации между базами данных

Database Source: 
Table User has a primary key 
Table Comments has a primary key 
Table UserComments is a join table with two foreign keys for User and Comments 

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

Я думаю, что мне, вероятно, придется сделать это за несколько шагов.

Шаг 1, я бы сбросил источник в файл, используя команду Postgres Copy.

Шаг 2, В поле «Я» Я бы добавил временный столбец second_key как для пользователя, так и для комментариев и новую таблицу соединений SecondUserComments.

Шаг 3, я бы импортировал сбрасываемый файл в Dest using Copy еще раз, с введенными ключами в столбцы second_key.

Шаг 4: Я бы добавил строки в UserComments в Dest на основе содержимого SecondUserComments, используя только настоящие первичные ключи. Может ли это быть сделано с помощью команды SQL или мне нужен скрипт?

Шаг 5, удалите таблицу SecondUserComments и удалите столбцы second_key.

Это звучит как лучший способ сделать это, или есть лучший способ, с которым я не обращаю внимания?

ответ

1

Вы можете использовать dblink для подключения одной базы данных к другой и просто вставьте нужные вам записи и столбцы. Тогда вам не нужно менять datamodel, не нужно делать pg_dump, просто хороший старый SQL.

+0

Как я могу избежать изменения данных, учитывая, что я также пытаюсь импортировать таблицу соединений, которая соединяется с первичными ключами, мне нужно будет изменить? –

Смежные вопросы