Я должен передать некоторые данные от другой базы данных. Старую базу данных называют 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
Как я копирую данные от старой базы данных до новой базы данных?
Базы данных изолированы в PostgreSQL; когда вы подключаетесь к серверу PostgreSQL, вы подключаетесь только к одной базе данных, вы не можете копировать данные из одной базы данных в другую с помощью SQL-запроса.
Если вы пришли из MySQL: то, что MySQL называет (свободно) « базами данных », является « схемами » в PostgreSQL - своего рода пространствами имен. База данных PostgreSQL может иметь множество схем, каждая со своими таблицами и представлениями, и вы можете копировать из одной схемы в другую с синтаксисом schema.table
.
Если у вас действительно две разные базы данных PostgreSQL, наиболее распространенным способом передачи данных из одной в другую будет экспорт ваших таблиц (с помощью pg_dump -t
) в файл и их импорт в другой. база данных (с psql
).
Если вам действительно нужно получить данные из отдельной базы данных PostgreSQL, другой вариант, упомянутый в ответе Гранта Джонсона, - это dblink , который является дополнительным модулем (в contrib /
) .
Есть три варианта копирования, если это одноразовый:
Если это постоянная необходимость, ответы следующие:
Как и предложил leonbloy, использование двух схем в базе данных - это то, что нужно. Предположим, есть исходная схема (старая БД) и целевая схема (новая БД), вы можете попробовать что-то вроде этого (вы должны учитывать имена столбцов, типы и т.д.):
INSERT INTO target.Awards SELECT * FROM source.Nominations;