appeler plusieurs fichiers SQL dans un seul fichier SQL dans Postgres

11

Comment appeler plusieurs fichiers sql dans un seul fichier sql, en postgres

Par exemple, j'ai aaa.sql, bbb.sql, ccc.sql.

Je veux exécuter ces 3 fichiers à partir de xxx.sql.

Quelqu'un peut-il me suggérer comment procéder?

Voyage
la source

Réponses:

12

Si vous exécutez ces fichiers, psqlvous voulez la \idirective ("exécuter les commandes à partir du fichier").

xxx.sql:

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

Si vous passez ces derniers à travers un autre programme, vous devrez combiner les fichiers vous-même - je ne pense pas qu'il existe une manière standard SQL d'exécuter des fichiers externes.

voretaq7
la source
Merci pour la réponse. Je vais tester et confirmer si j'ai réussi ou non
Trip
Ne semble pas encore travailler Je ne sais pas si je manque quelque chose. ai-je besoin de points-virgules à la fin ??? -Pas vraiment !!!
Voyage le
1
Vous devez être plus précis que « ne fonctionne pas » - Je vous assure que cela ne le travail - Reportez - vous au manuel psql
voretaq7
Ça a marché. Enfin :-) Thanku Le problème était - il n'a pas pu reconnaître le fichier et O a spécifié le chemin relatif pour le fichier et son fonctionnement Merci encore
Trip
@Trip Trip, n'oubliez pas de créditer voretaq pour sa réponse!
Richard T
4

Pas exactement ce que vous demandez, mais servira votre objectif: 1) Mettez tous vos fichiers de script dans un dossier; et 2) utilisez un script bash pour parcourir vos fichiers et exécuter psql. Par exemple:

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

C'est en fait un peu mieux car vous n'aurez pas à taper les noms de vos fichiers.

mehmet
la source
3

Sur un shell bash, vous pouvez le faire aussi avec un simple find -exec

find sql/ -name *.sql -exec psql -U user -f {} \;
Panciz
la source
Nécessite que vous utilisiez "*.sql"plutôt que*.sql
Jeel Shah