sql >> Base de Datos >  >> RDS >> PostgreSQL

permiso denegado al intentar leer un archivo csv usando JDBC para la base de datos postgres

¿Ejecutó la instrucción como superusuario? en psql y como otro usuario a través de JDBC?
El manual nos dice :

Tu puedes eluda esta restricción envolviendo la instrucción en una función con SECURITY DEFINER propiedad de un superusuario. Tenga en cuenta los riesgos de seguridad . También es posible que desee REVOKE todos los derechos del público y solo GRANT a los usuarios seleccionados. Podría verse así:

CREATE OR REPLACE FUNCTION foo()
  RETURNS void AS
$BODY$
    COPY data_1
    FROM E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
    USING delimiters ',';
$BODY$
  LANGUAGE sql VOLATILE SECURITY DEFINER
  SET search_path = public, pg_temp;  -- or whatever schema the table is in

REVOKE ALL ON FUNCTION foo() FROM public;
GRANT SELECT ON FUNCTION foo() TO my_user;

Además, tenga en cuenta que la sintaxis adecuada para las cadenas de escape es:

E'C:\\Users\\Abhishek\\Desktop\\data1.csv'

Tenga en cuenta el E'...' .
A partir de la versión 9.1, la configuración standard_conforming_strings está activado de forma predeterminada, haciendo cumplir esto.