Дамп содержимого запроса RDS Postgres

Краткая версия этого вопроса:

Я хотел бы сбросить содержимое запроса Postgres из экземпляра базы данных, размещенного в RDS, внутри сценария оболочки.

Полная версия:

Прямо сейчас я пишу сценарий оболочки, в котором я хотел бы сбросить содержимое запроса в файл .dump из исходной базы данных и запустить файл дампа в экземпляре целевой базы данных. Оба экземпляра БД размещены в RDS.

MySQL позволяет сделать это с помощью инструмента mysqldump. , но рекомендуемым решением этой проблемы в Postgres, по-видимому, является использование Команда КОПИРОВАТЬ. Однако команда COPY недоступна в экземплярах RDS. В этом случае рекомендуется использовать команду '\copy', которая делает то же самое локально с помощью инструмента psql. Однако не похоже как это вариант поддержки внутри скрипта оболочки.

Как лучше всего это сделать?

Благодарю вас!


person bfissa    schedule 23.10.2018    source источник
comment
Вы можете использовать \copy изнутри psql   -  person a_horse_with_no_name    schedule 31.10.2018


Ответы (1)


Я не знаком с оболочкой, но я использовал пакетный файл в Windows, чтобы вывести вывод запроса в файл и импортировать файл в другой экземпляр.

Вот что я использовал для экспорта из postgres RDS в файл в Windows.

SET PGPASSWORD=your_password
cd "C:\Program Files (x86)\pgAdmin 4\v3\runtime"
psql -h your_host -U your_username -d your_databasename -c "\copy (your_query) TO 
path\file_name.sql"

Все вышеперечисленные команды находятся в одном пакетном файле.

person mija    schedule 31.10.2018