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

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

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

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

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

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

- Сгенерировать дамп исходной таблицы с помощью утилиты pg_dump.
pg_dump -h хост_исходной_базы -U имя_пользователя_исходной_базы -t исходная_таблица -f имя_файла_дампа

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

- Создать целевую базу данных, если она еще не существует.
createdb -h хост_целевой_базы -U имя_пользователя_целевой_базы имя_целевой_базы

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

- Импортировать дамп в целевую базу данных с помощью утилиты pg_restore.
pg_restore -h хост_целевой_базы -U имя_пользователя_целевой_базы -d имя_целевой_базы имя_файла_дампа

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

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