Avez-vous exécuté l'instruction en tant que superutilisateur en psql et en tant qu'autre utilisateur via JDBC ?
Le manuel nous dit
:
Vous pouvez contourner cette restriction en enveloppant l'instruction dans une fonction avec SECURITY DEFINER
appartenant à un superutilisateur. Soyez conscient des risques de sécurité . Vous pouvez également vouloir REVOKE
tous les droits du public et uniquement GRANT
aux utilisateurs sélectionnés. Pourrait ressembler à ceci :
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;
Sachez également que la bonne syntaxe pour les chaînes d'échappement est :
E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
Notez le E'...'
.
Depuis la version 9.1, le paramètre standard_conforming_strings
est activé par défaut, ce qui l'applique.