Я хотел запустить команду изменения таблицы с помощью сценария 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;
Ответ 1 · рейтинг 1 · Philip Couling
Чтобы запустить такой скрипт, вам нужно перенаправить 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