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.

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 -

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é.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.