web-dev-qa-db-fra.com

Autorisation refusée dans le fichier essayant d'importer

Lorsque j'essaie d'utiliser \i sur un fichier qui ne se trouve pas dans le dossier psql.exe, il est indiqué C:: permission denied. Par exemple, j'ai un fichier avec la commande SQL à C:\Users\Work\Desktop\School Work\load_database.sql et quand je tape \i "C:\Users\Work\Desktop\School Work\load_database.sql" ça dit C:: permission denied. Comment puis-je réparer cela?

J'ai trouvé un travail autour ici où vous copiez le fichier .sql dans le même dossier que se trouve psql.exe.

Au fait, \ i signifie-t-il importation?

19
Celeritas

Vous venez de rencontrer une particularité de psql sous Windows.

Dans mon commentaire, je voulais juste exclure la possibilité que vous vraiment ne disposiez pas de l'autorisation nécessaire. Ensuite, il s'est avéré que même sous Windows, vous devez utiliser des barres obliques "normales" au lieu de barres obliques inverses, c'est-à-dire:

\i 'C:/Users/Work/Desktop/School Work/load_database.sql'

devrait fonctionner correctement quel que soit le dossier à partir duquel vous démarrez psql. Notez que j'ai utilisé des guillemets simples - avec des guillemets doubles que vous aviez

"C:/Users/Work/Desktop/School Work/load_database.sql": Invalid argument
37
dezso

Mettez le fichier dans un répertoire avec une autorisation complète pour tout le monde, comme 'c:\tmp'

OR

Définissez les privilèges de lecture sur le fichier que vous souhaitez importer.

J'ai mis la permission de lecture "Tout le monde".

Après avoir importé le fichier, vous pouvez révoquer cette autorisation.

windows file properties

6
user68006