Исходники нескольких файлов одновременно с PSQL

27

Я хочу выполнить несколько сценариев SQL последовательно с psqlодной транзакцией для настройки схемы базы данных. Каков наилучший способ сделать это? В прошлом я знал, что у меня был главный сценарий, с которым я работал psql, включая другие файлы, однако я не помню синтаксис этого сценария.

xenoterracide
источник

Ответы:

32

Ваш скрипт может выглядеть так:

BEGIN;
\i file1.sql
\i file2.sql
COMMIT;

Или вы можете сделать что-то вроде этого:

cat file1.sql file2.sql | psql -1 -f -
Питер Айзентраут
источник
1
Понимание труб в оболочке помогло мне получить последнюю команду.
ma11hew28
Ваш пример с BEGIN; COMMIT; не работает, вам нужны полуколонцы в конце каждой \iстроки:
nichochar
0

Я сделал это используя find в unix / linux с путем к файлу sql past с параметром rep_sql с инструкцией read:

find -P ${rep_sql} -type f -name *.sql -execdir psql -d "mabase" -f {} +

В нем говорится: найдите не следующие по ссылкам файлы независимо от имени с ext как «.sql» и выполните в каталоге файл psql, работающий с mabase, и выполните найденный файл.

Deun
источник