Ź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.

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 -

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.