Source plusieurs fichiers à la fois avec psql

27

Je veux exécuter plusieurs scripts sql séquentiellement avec psqlune seule transaction pour configurer mon schéma de base de données. Quelle est la meilleure façon de procéder? Dans le passé, je sais que j'avais un script maître psqlcontre lequel j'exécutais qui comprenait les autres fichiers, mais je ne me souviens pas de la syntaxe de ce script.

xénoterracide
la source

Réponses:

32

Votre script pourrait ressembler à ceci:

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

Ou vous pouvez faire quelque chose comme ça:

cat file1.sql file2.sql | psql -1 -f -
Peter Eisentraut
la source
1
Comprendre les tuyaux dans le shell m'a aidé à obtenir la dernière commande.
ma11hew28
Votre exemple avec BEGIN; COMMETTRE; ne fonctionne pas, vous avez besoin de demi-colonnes à la fin de chaque \iligne:
nichochar
0

Je l'ai fait en utilisant find dans unix / linux avec le chemin d'accès au fichier sql passé avec le paramètre rep_sql avec l'instruction "read":

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

Il dit: trouver les fichiers de liens non suivis quel que soit le nom avec ext comme «.sql» et exécuter dans le répertoire du fichier psql fonctionnant avec mabase et exécuter le fichier trouvé.

Deun
la source