postgreSQL - psql \i : comment faire pour exécuter un script dans un chemin donné
Je suis nouveau sur postgreSQL et j'ai une question simple:
Je suis en train de créer un script simple qui crée un DB de sorte que je puisse ensuite l'appeler comme ceci:
psql -f createDB.sql
Je veux le script pour appeler d'autres scripts (séparés pour la création des tables, ajouter des contraintes, fonctions, etc), comme ceci:
\i script1.sql
\i script2.sql
Il fonctionne très bien à condition que createDB.sql est dans le même dir.
Mais si je déplace script2 à un sous-répertoire de celui avec createDB, et de modifier le createDB de sorte qu'il ressemble à ceci:
\i script1.sql
\i somedir\script2.sql
J'obtiens une erreur:
psql:createDB.sql:2: somedir: Permission denied
J'utilise Postgres Plus de 8,3 pour windows, par défaut de l'utilisateur postgres.
EDIT:
Idiot moi, unix barres obliques résolu le problème.
Vous devez vous connecter pour publier un commentaire.
Postgres commencé sur Linux/Unix. Je soupçonne que l'inversion de la barre oblique avec fix it.
Si vous avez besoin pour obtenir quelque chose de
Si cela ne résout pas le problème, mon prochain pense être vous avez besoin pour échapper à la barre oblique inverse.
Avez-vous essayé d'utiliser Unix style des barres obliques (/au lieu de \)?
\ est souvent une évasion ou à caractère de commande, et peut être source de confusion. Je n'ai jamais eu de problèmes avec cela, mais je n'aime pas Windows, donc je ne peux pas le tester.
En outre, les autorisations peuvent être basées sur l'utilisateur qui exécute psql, ou peut-être de l'utilisateur exécutant l'administrateur du service, vérifier que les deux ont lu à ce fichier dans ce répertoire.
Essayer cela, je travaille moi-même à le faire
je l'ai fait essayer cela et son travail dans une machine windows pour exécuter un fichier sql sur un schéma spécifique.