Sorgi diversi file contemporaneamente con psql


27

Voglio eseguire diversi script sql in sequenza con psqlun'unica transazione per configurare il mio schema di database. Qual è il modo migliore per farlo? In passato so di avere uno script master che ho eseguito psqlcontro che includeva gli altri file, tuttavia non ricordo la sintassi di questo script.

Risposte:


32

La tua sceneggiatura potrebbe apparire così:

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

Oppure potresti fare qualcosa del genere:

cat file1.sql file2.sql | psql -1 -f -

1
Comprendere le pipe nella shell mi ha aiutato a ottenere l'ultimo comando.
ma11hew28,

Il tuo esempio con BEGIN; COMMETTERE; non funziona, sono necessarie semicolonne alla fine di ogni \iriga:
nichochar

0

L'ho fatto usando find in unix / linux con il percorso del file sql passato con il parametro rep_sql con l'istruzione "read":

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

Dice: trova non seguendo i file dei collegamenti qualunque sia il nome con ext come «.sql» ed esegui nella directory del file psql lavorando con mabase ed esegui il file trovato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.