chiama più file SQL in un singolo file SQL in Postgres


11

Come chiamare più file sql in un singolo file sql, in postgres

Ad esempio ho aaa.sql, bbb.sql, ccc.sql.

Voglio eseguire questi 3 file da xxx.sql.

Qualcuno può suggerirmi come farlo.

Risposte:


12

Se si eseguono questi file attraverso psqlsi desidera la \idirettiva ("eseguire i comandi dal file").

xxx.sql:

\i aaa.sql
\i bbb.sql
\i ccc.sql

Se li stai passando attraverso qualche altro programma dovrai combinare i file da solo - non credo che ci sia un modo standard SQL di eseguire file esterni.


Grazie per la risposta. Proverò e confermerò se sono riuscito a raggiungerlo o meno
Viaggio

Non sembra funzionare ancora Non sono sicuro che mi manchi qualcosa. ho bisogno di punti e virgola alla fine ??? -Non proprio !!!
Viaggio

1
Hai bisogno di essere più specifico di "non lavoro" - vi assicuro questo fa il lavoro - fare riferimento al manuale di psql
voretaq7

Ha funzionato. Infine :-) Grazie Il problema era: non era in grado di riconoscere il file e O ha specificato il percorso relativo per il file e il suo funzionamento Grazie ancora
Viaggio

@Trip Trip, non dimenticare di dare credito a voretaq per la sua risposta!
Richard T,

4

Non esattamente quello che stai chiedendo, ma servirà al tuo scopo: 1) Metti tutti i tuoi file di script in una cartella; e 2) utilizzare uno script bash per scorrere i file ed eseguire psql. Per esempio:

SCRIPTS_DIR=/home/myproject/scripts
DATABASE_NAME=database_name

for file in $SCRIPTS_DIR/*.sql
    do sudo -u postgres psql $DATABASE_NAME -f $file
done

In effetti, questo è un po 'meglio perché non dovrai digitare i nomi dei tuoi file.


3

Su una shell bash puoi farlo anche con un semplice find -exec

find sql/ -name *.sql -exec psql -U user -f {} \;

Richiede l'uso "*.sql"piuttosto che*.sql
Jeel Shah il
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.