volcado texto such ser rutas relativas pudo privilegios por pg_restore permiten parece para lectura hacia favor estado error entrada archivo archiver abrir 58p01 postgresql

texto - roles en postgresql



ERROR de Postgres: no se pudo abrir el archivo para leer: Permiso denegado (8)

Computadora: Mac OS X, versión 10.8 Base de datos: Postgres

Intentando importar archivos csv a postgres.

pg> copy items_ordered from ''/users/darchcruise/desktop/items_ordered.csv'' with CSV; ERROR: could not open file "/users/darchcruise/desktop/items_ordered.csv" for reading: Permission denied

Entonces probé

$> chown postgres /users/darchcruise/desktop/items_ordered.csv chown: /users/darchcruise/desktop/items_ordered.csv: Operation not permitted

Por último, probé

$> ls -l -rw-r--r-- 1 darchcruise staff 1016 Oct 18 21:04 items_ordered.csv

¡Cualquier ayuda es muy apreciada!


Asumiendo la herramienta de línea de comandos psql , puede usar /copy lugar de copy .

/copy abre el archivo y alimenta el contenido al servidor, mientras que copy le dice al servidor que abra el archivo y lo lea, lo que puede ser problemático en términos de permisos, o incluso imposible si el cliente y el servidor se ejecutan en diferentes máquinas sin compartir archivos entre.

Bajo el capó, /copy se implementa como COPY FROM stdin y acepta las mismas opciones que COPY lado del servidor.


Copie el archivo CSV a / tmp

Para mí, esto resolvió el problema.


Otra forma de hacerlo, si tiene pgAdmin y se siente cómodo con la GUI, es ir a la tabla en el esquema y hacer clic derecho sobre la tabla en la que desea importar el archivo y seleccionar "Importar" para buscar el archivo, seleccionar el tipo de su archivo, las columnas en las que desea imputar los datos, y luego seleccione importar.

Eso fue hecho usando pgAdmin III y la versión 9.4 de PostgreSQL


Para mí, funcionó simplemente agregar sudo (o ejecutar como raíz) para el comando chown:

sudo chown postgres /users/darchcruise/desktop/items_ordered.csv


Puede ser que esté utilizando pgadmin conectando el host remoto y luego U intenta actualizar desde su sistema, pero busca ese archivo en el sistema de archivos del sistema remoto ... es el error al que me enfrenté. Puede ser también que lo compruebes.


Tuve el problema cuando estaba tratando de exportar datos desde un servidor remoto al disco local. No me había dado cuenta de que la copy SQL en realidad se ejecuta en el servidor y que intenta escribir en una carpeta del servidor. En su lugar, lo correcto era usar /copy que es el comando psql y escribe en el sistema de archivos local como esperaba. http://www.postgresql.org/message-id/CAFjNrYsE4Za_KWzmfgN1_-MG7GTw_vpMRxPk=OEjAiLqLskxdA@mail.gmail.com

Quizás eso también podría serle útil a alguien más.


Copie su archivo CSV en la carpeta / tmp

Los archivos nombrados en un comando COPY son leídos o escritos directamente por el servidor, no por la aplicación cliente. Por lo tanto, deben residir o ser accesibles a la máquina del servidor de la base de datos, no al cliente. Deben ser accesibles y legibles o escribibles por el usuario de PostgreSQL (la identificación de usuario con la que se ejecuta el servidor), no el cliente. COPY nombrar un archivo solo se permite a los superusuarios de la base de datos, ya que permite leer o escribir cualquier archivo al que el servidor tenga privilegios de acceso.


chmod a+rX /users/darchcruise/ /users/darchcruise/desktop /users/darchcruise/desktop/items_ordered.csv

Esto cambiará los derechos de acceso para su carpeta. Tenga en cuenta que todos podrán leer su archivo. No puede usar chown como usuario sin derechos administrativos. También considere aprender umask para facilitar la creación de archivos compartidos.