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

Для переноса данных из одной таблицы в одной базе данных в другую таблицу в другой базе данных в PostgreSQL существует несколько подходов.

  1. Используя команду INSERT INTO SELECT:

Данный подход позволяет вставить данные из исходной таблицы в целевую таблицу при помощи одного SQL-запроса. Для этого нужно выполнить следующий запрос:

INSERT INTO базаназначения.целеваятаблица (столбцыцелевойтаблицы)
SELECT столбцыисходнойтаблицы FROM базаисточник.исходнаятаблица;

Нужно заменить базаназначения на имя базы данных, где находится целевая таблица; целеваятаблица на имя целевой таблицы; столбцыцелевойтаблицы на имена столбцов целевой таблицы; базаисточник на имя базы данных, где находится исходная таблица и исходнаятаблица на имя исходной таблицы, из которой нужно взять данные.

  1. Используя утилиту pgdump и pgrestore:

Данный метод предполагает экспорт данных из исходной таблицы в файл дампа и последующий импорт этого файла в целевую базу данных. Чтобы выполнить перенос данных с использованием этого подхода, нужно выполнить следующие шаги:

  • Сгенерировать дамп исходной таблицы с помощью утилиты pg_dump.

pgdump -h хостисходнойбазы -U имяпользователяисходнойбазы -t исходнаятаблица -f имяфайла_дампа

Замените хостисходнойбазы на IP-адрес или имя хоста исходной базы данных, имяпользователяисходнойбазы на имя пользователя, которому разрешен доступ к базе данных, исходнаятаблица на имя исходной таблицы, из которой нужно взять данные, и имяфайладампа на имя файла, в который будет экспортирован дамп.

  • Создать целевую базу данных, если она еще не существует.

createdb -h хостцелевойбазы -U имяпользователяцелевойбазы имяцелевой_базы

Замените хостцелевойбазы на IP-адрес или имя хоста целевой базы данных, имяпользователяцелевойбазы на имя пользователя, имеющего права доступа к целевой базе данных, и имяцелевой_базы на имя целевой базы данных.

  • Импортировать дамп в целевую базу данных с помощью утилиты pg_restore.

pgrestore -h хостцелевойбазы -U имяпользователяцелевойбазы -d имяцелевойбазы имяфайладампа

Замените хостцелевойбазы на IP-адрес или имя хоста целевой базы данных, имяпользователяцелевойбазы на имя пользователя, имеющего права доступа к целевой базе данных, имяцелевойбазы на имя целевой базы данных и имяфайла_дампа на имя файла, из которого нужно импортировать дамп.

Оба подхода имеют свои преимущества и могут быть использованы в зависимости от конкретной ситуации. Первый подход позволяет осуществить перенос данных с помощью одного SQL-запроса и подходит для небольших объемов данных. Второй подход подходит для переноса больших объемов данных и предоставляет возможность добавления дополнительных опций при экспорте и импорте данных.