llamar a múltiples archivos SQL en un solo archivo SQL en Postgres

11

Cómo llamar a múltiples archivos sql en un solo archivo sql, en postgres

Por ejemplo, tengo aaa.sql, bbb.sql, ccc.sql.

Quiero ejecutar estos 3 archivos desde xxx.sql.

¿Alguien puede sugerirme cómo hacer esto?

Viaje
fuente

Respuestas:

12

Si está ejecutando estos archivos psql, desea la \idirectiva ("ejecutar comandos desde archivo").

xxx.sql:

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

Si los está pasando a través de algún otro programa, deberá combinar los archivos usted mismo; no creo que haya una forma estándar de SQL de ejecutar archivos externos.

voretaq7
fuente
Gracias por la respuesta. Probaré y confirmaré si pude lograrlo o no
viaje
No parece funcionar todavía No estoy seguro de si me falta algo. ¿Necesito punto y coma al final? -Realmente no !!!
Viaje
1
Tienes que ser más específico que "no funciona" - Te aseguro esto hace el trabajo - Consulte el manual de psql
voretaq7
Funcionó. Finalmente :-) El problema de Thanku fue: no pudo reconocer el archivo y O especificó la ruta relativa para el archivo y está funcionando Gracias una vez más
Viaje
@Trip Trip, ¡no olvides dar crédito a voretaq por su respuesta!
Richard T
4

No es exactamente lo que está pidiendo, pero servirá para su propósito: 1) Coloque todos sus archivos de script en una carpeta; y 2) use un script bash para iterar a través de sus archivos y ejecutar psql. Por ejemplo:

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

De hecho, esto es un poco mejor porque no tendrá que escribir los nombres de sus archivos.

mehmet
fuente
3

En un bash shell puedes hacerlo también con un simple find -exec

find sql/ -name *.sql -exec psql -U user -f {} \;
Panciz
fuente
Requiere que uses en "*.sql"lugar de*.sql
Jeel Shah