Как запустить скрипт изменения таблицы в postgres с помощью bash

Я хотел запустить команду изменения таблицы с помощью сценария bash. Мне удалось создать таблицу, загрузить базовую модель, создать таблицы конфигурации и т. д. Скрипт войдет в базу данных postgres до того, как выполнит команду alter table. Он застрял как (abcdb=> ) без перехода к команде alter table. Есть ли способ убедиться, что таблица изменений может выполняться?

Логин как

psql -h 191.169.51.10 -d abcdb -U myname



 alter table attr_config rename regexp to regexp_val;
 alter table class_action_config rename type to type_name;
 alter table funcitem_config rename type to type_name;

person Lee    schedule 07.09.2016    source источник
comment
являются ли приведенные выше строки частью вашего скрипта?   -  person redneb    schedule 07.09.2016
comment
да, это просто часть моего сценария. Первая строка будет входить в базу данных postgres.   -  person Lee    schedule 07.09.2016


Ответы (1)


Чтобы запустить такой скрипт, вам нужно перенаправить SQL/DML (операторы изменения таблицы) в команду psql. Иначе bash не поймет, что с ними делать.

psql -h 191.169.51.10 -d abcdb -U myname << EOF

 alter table attr_config rename regexp to regexp_val;
 alter table class_action_config rename type to type_name;
 alter table funcitem_config rename type to type_name;
EOF

В качестве альтернативы вы можете поместить свой SQL/DML в отдельный файл и использовать psql для чтения из него:

psql -h 191.169.51.10 -d abcdb -U myname < alter_statements.sql

Or

psql -h 191.169.51.10 -d abcdb -U myname -f alter_statements.sql
person Philip Couling    schedule 07.09.2016