Hai eseguito l'istruzione come superutente in psql e come altro utente tramite JDBC?
Il manuale ci dice
:
puoi aggirare questa restrizione racchiudendo l'istruzione in una funzione con SECURITY DEFINER
di proprietà di un superutente. Tieni presente i rischi per la sicurezza . Potresti anche voler REVOCA
tutti i diritti pubblici e solo GRANT
agli utenti selezionati. Potrebbe assomigliare a questo:
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;
Inoltre, tieni presente che la sintassi corretta per le stringhe di escape è:
E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
Nota il E'...'
.
A partire dalla versione 9.1, l'impostazione standard_conforming_strings
è attivo per impostazione predefinita, applicandolo.