-1

Мне нужно экспортировать одну таблицу (только данные) в другую таблицу с другим именем, но с той же структурой, используя PostgreSQL и инструмент psql. Я также хотел бы экспортировать только определенные записи и только несколько полей из исходной таблицы.

Может ли кто-нибудь дать мне пример?

Спасибо!

1 ответ1

0

Хорошо! Вот мой хак! Это подход "Баш"!

ПРИМЕЧАНИЕ I:
<TARGET_DB_NAME> -> Принимайте одно и то же имя таблицы в источнике и месте назначения! <TARGET_TABLE_NAME> -> Принимайте одно и то же имя базы данных в источнике и месте назначения!

ПРИМЕЧАНИЕ II: я использую "fbcf111499a6467ba" в качестве маловероятного имени для целевой таблицы. Цель состоит в том, чтобы избежать проблем при исполнении "седа".

ВЫПОЛНИТЬ НА "ИСТОЧНИК МАШИНЫ"/"БАЗА ДАННЫХ"

cd /tmp
sudo -u postgres psql <TARGET_DB_NAME> -c "CREATE TABLE fbcf111499a6467ba AS SELECT column_a, column_b, column_c FROM <TARGET_TABLE_NAME> WHERE <YOUR_SEARCH_QUERY>;"
sudo -u postgres pg_dump --file "/tmp/<TARGET_TABLE_NAME>.sql" --table=fbcf111499a6467ba --data-only --column-inserts "<TARGET_DB_NAME>"
sed -i 's/INSERT INTO fbcf111499a6467ba (/INSERT INTO <TARGET_TABLE_NAME> (/g' /tmp/<TARGET_TABLE_NAME>.sql
sudo -u postgres psql <TARGET_DB_NAME> -c "DROP TABLE fbcf111499a6467ba;"

ВЫПОЛНИТЬ НА "ЦЕЛЕВОЙ МАШИНЕ"/"БАЗЕ ДАННЫХ"

cd /tmp
sudo -u postgres psql <TARGET_DB_NAME> < /tmp/<TARGET_TABLE_NAME>.sql

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .