Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: LeeОтветов: 1

Я хотел запустить команду изменения таблицы с помощью сценария 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;
  • являются ли приведенные выше строки частью вашего скрипта? redneb 07.09.2016
  • да, это просто часть моего сценария. Первая строка будет входить в базу данных postgres. Lee 07.09.2016

bashpostgresqlsqlddl

Ответы

Ответ 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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы