PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

permissão negada tentando ler um arquivo csv usando JDBC para banco de dados postgres


Você executou a instrução como superusuário no psql e como outro usuário via JDBC?
O manual nos diz :

Você pode contorne essa restrição envolvendo a instrução em uma função com SECURITY DEFINER propriedade de um superusuário. Esteja ciente dos riscos de segurança . Você também pode querer REVOKE todos os direitos do público e somente GRANT aos usuários selecionados. Poderia ficar assim:
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;

Além disso, saiba que a sintaxe adequada para strings de escape é:
E'C:\\Users\\Abhishek\\Desktop\\data1.csv'

Observe o E'...' .
A partir da versão 9.1, a configuração standard_conforming_strings está ativado por padrão, impondo isso.