it-swarm.dev

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

Chcę wykonać kilka skryptów sql sekwencyjnie z psql jako pojedynczą transakcją, aby skonfigurować mój schemat bazy danych. Jak najlepiej to zrobić? W przeszłości wiem, że miałem skrypt główny, który uruchomiłem psql przeciwko temu, który zawierał inne pliki, jednak nie pamiętam składni tego skryptu.

27
xenoterracide

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 -
32
Peter Eisentraut

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.

0
Deun