вызывать несколько файлов Sql в одном файле SQL в Postgres

11

Как вызвать несколько файлов SQL в одном файле SQL, в Postgres

Например, у меня есть aaa.sql, bbb.sql, ccc.sql.

Я хочу выполнить эти 3 файла из xxx.sql.

Может кто-нибудь предложить мне, как это сделать.

Поездка
источник

Ответы:

12

Если вы запускаете эти файлы через psqlвас, вам нужна \iдиректива («выполнить команды из файла»).

xxx.sql:

\i aaa.sql
\i bbb.sql
\i ccc.sql

Если вы передаете их через какую-то другую программу, вам нужно объединить файлы самостоятельно - я не верю, что существует какой-либо стандартный для SQL способ выполнения внешних файлов.

voretaq7
источник
Спасибо за ответ. Я проверю и подтвердлю, смог ли я этого добиться или нет
Поездка
Не похоже на работу еще Не уверен, что я что-то упустил. мне нужна точка с запятой в конце ??? -На самом деле, нет !!!
Поездка
1
Вы должны быть более конкретными , чем «не работает» , - уверяю вас , это делает работу - Обратитесь к руководству Psql
voretaq7
Это сработало. Наконец :-) Спасибо, проблема была в том, что он не смог распознать файл, и O указал относительный путь к файлу и его работе. Еще раз спасибо
Поездка
@ Поездка, не забудьте отдать должное voretaq за его ответ!
Ричард Т
4

Не совсем то, что вы просите, но послужит вашей цели: 1) Поместите все ваши файлы скриптов в папку; и 2) использовать скрипт bash для перебора ваших файлов и запуска psql. Например:

SCRIPTS_DIR=/home/myproject/scripts
DATABASE_NAME=database_name

for file in $SCRIPTS_DIR/*.sql
    do sudo -u postgres psql $DATABASE_NAME -f $file
done

На самом деле это немного лучше, потому что вам не придется вводить имена файлов.

Мехмет
источник
3

На оболочке Bash вы можете сделать это также с помощью простого find -exec

find sql/ -name *.sql -exec psql -U user -f {} \;
Panciz
источник
Требует, чтобы вы использовали, "*.sql"а не*.sql
Джил Шах