Quell mehrere Dateien gleichzeitig mit psql

27

Ich möchte mehrere SQL-Skripte nacheinander psqlals einzelne Transaktion ausführen , um mein Datenbankschema einzurichten. Wie geht das am besten? In der Vergangenheit wusste ich, dass ich ein Master-Skript hatte, psqlgegen das ich lief , einschließlich der anderen Dateien, aber ich erinnere mich nicht an die Syntax dieses Skripts.

Xenoterracid
quelle

Antworten:

32

Ihr Skript könnte so aussehen:

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

Oder Sie könnten so etwas tun:

cat file1.sql file2.sql | psql -1 -f -
Peter Eisentraut
quelle
1
Das Verständnis der Pipes in der Shell hat mir geholfen, den letzten Befehl zu erhalten.
Ma11hew28
Ihr Beispiel mit BEGIN; VERPFLICHTEN; funktioniert nicht, Sie benötigen Semi-Spalten am Ende jeder \iZeile:
Nichochar
0

Ich habe es unter Verwendung von find in Unix / Linux mit dem Pfad zur Datei sql past with rep_sql parameter mit der Anweisung "read" gemacht:

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

Es heißt: Finden Sie keine folgenden Links Dateien mit dem Namen ext als «.sql» und führen Sie im Verzeichnis der mit mabase arbeitenden Datei psql aus und führen Sie die gefundene Datei aus.

Deun
quelle