Źródło kilku plików jednocześnie za pomocą psql

27

Chcę wykonać kilka skryptów SQL sekwencyjnie psqlza pomocą jednej transakcji, aby skonfigurować schemat bazy danych. Jak najlepiej to zrobić? W przeszłości wiem, że miałem skrypt główny, na którym działałem, psqlktóry zawierał inne pliki, ale nie pamiętam składni tego skryptu.

ksenoterracid
źródło

Odpowiedzi:

32

Twój skrypt może wyglądać następująco:

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

Lub możesz zrobić coś takiego:

cat file1.sql file2.sql | psql -1 -f -
Peter Eisentraut
źródło
1
Zrozumienie rur w powłoce pomogło mi uzyskać ostatnie polecenie.
ma11hew28,
Twój przykład z BEGIN; POPEŁNIĆ; nie działa, potrzebujesz półkolumn na końcu każdej \ilinii:
nichochar
0

Zrobiłem to za pomocą find w unix / linux ze ścieżką do pliku sql past z parametrem rep_sql z instrukcją „read”:

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

Mówi: nie znajduj następujących plików łączy bez względu na nazwę z rozszerzeniem jako «.sql» i uruchom w katalogu pliku psql pracującego z bazą danych i uruchom znaleziony plik.

Deun
źródło