Передайте данные между базами данных с PostgreSQL

Я должен передать некоторые данные от другой базы данных. Старую базу данных называют paw1.moviesDB, и новая база данных является paw1. Схема каждой таблицы следующая.

Awards (name of the table)(new DB)
Id [PK] Serial           Award

Nominations (name of the table) (old DB)
Id [PK] Serial           nominations

Как я копирую данные от старой базы данных до новой базы данных?

49
задан Peter Mortensen 17 October 2017 в 09:02
поделиться

3 ответа

Базы данных изолированы в PostgreSQL; когда вы подключаетесь к серверу PostgreSQL, вы подключаетесь только к одной базе данных, вы не можете копировать данные из одной базы данных в другую с помощью SQL-запроса.

Если вы пришли из MySQL: то, что MySQL называет (свободно) « базами данных », является « схемами » в PostgreSQL - своего рода пространствами имен. База данных PostgreSQL может иметь множество схем, каждая со своими таблицами и представлениями, и вы можете копировать из одной схемы в другую с синтаксисом schema.table .

Если у вас действительно две разные базы данных PostgreSQL, наиболее распространенным способом передачи данных из одной в другую будет экспорт ваших таблиц (с помощью pg_dump -t ) в файл и их импорт в другой. база данных (с psql ).

Если вам действительно нужно получить данные из отдельной базы данных PostgreSQL, другой вариант, упомянутый в ответе Гранта Джонсона, - это dblink , который является дополнительным модулем (в contrib / ) .

33
ответ дан 7 November 2019 в 11:22
поделиться

Есть три варианта копирования, если это одноразовый:

  1. Используйте db_link (я думаю, что он все еще находится в contrib)
  2. Пусть приложение сделает всю работу.
  3. Экспорт / импорт

Если это постоянная необходимость, ответы следующие:

  1. Изменить схемы в той же базе данных
  2. db_link
8
ответ дан 7 November 2019 в 11:22
поделиться

Как и предложил leonbloy, использование двух схем в базе данных - это то, что нужно. Предположим, есть исходная схема (старая БД) и целевая схема (новая БД), вы можете попробовать что-то вроде этого (вы должны учитывать имена столбцов, типы и т.д.):

INSERT INTO target.Awards SELECT * FROM source.Nominations;
0
ответ дан 7 November 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: