Permiso denegado en el archivo que intenta importar

17

Cuando trato de usar \iun archivo que no está en la carpeta psql.exe, dice C:: permission denied. Por ejemplo, tengo un archivo con comando SQL en C:\Users\Work\Desktop\School Work\load_database.sqly cuando lo escribo \i "C:\Users\Work\Desktop\School Work\load_database.sql"dice C:: permission denied. ¿Cómo puedo arreglar esto?

Encontré un trabajo por aquí donde copia el archivo .sql a la misma carpeta en la que se encuentra psql.exe.

Por cierto, ¿ puedo representar la importación?

Celeritas
fuente

Respuestas:

32

Acabas de toparte con una peculiaridad de psqlWindows.

En mi comentario, solo quería excluir la posibilidad de que realmente no tuviera el permiso necesario. Luego resultó que incluso en Windows, debe usar barras "normales" en lugar de barras invertidas, es decir:

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

debería funcionar bien independientemente de la carpeta desde la que comience psql. Tenga en cuenta que usé comillas simples, con comillas dobles que obtuvo

"C:/Users/Work/Desktop/School Work/load_database.sql": Invalid argument
dezso
fuente
Gracias. ¿Cómo sabías usar comillas simples y no dobles? ¿Es esa una regla general para postgres o cuál es la diferencia?
Celeritas
1
@Celeritas Creo que es el resultado de un conflicto de cómo Windows usa comillas dobles en las rutas y cómo psql(y PostgreSQL) lo usan en los identificadores.
dezso
esto no funcionó para mí en windows10, barras diagonales y todo, la respuesta del usuario 68006 sí lo hizo
Scaramouche
1
@ Scaramouche gracias por los comentarios! Aparentemente, no todos los permisos denegados se crean de la misma manera.
dezso
6

Coloque el archivo en algún directorio con permiso completo para todos, como 'c: \ tmp'

O

Establezca privilegios de lectura para el archivo que desea importar.

Puse permiso de lectura de 'Todos'.

Después de importar el archivo, puede revocar ese permiso.

propiedades del archivo de windows

usuario68006
fuente