Haben Sie die Anweisung als Superuser ausgeführt? in psql und als anderer Benutzer über JDBC?
Das Handbuch sagt uns
:
Sie können umgehen Sie diese Einschränkung, indem Sie die Anweisung in eine Funktion mit SECURITY DEFINER
im Besitz eines Superusers. Seien Sie sich der Sicherheitsrisiken . Sie können auch WIDERRUFEN
alle Rechte von der Öffentlichkeit und nur GEWÄHREN
an ausgewählte Benutzer. Könnte so aussehen:
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;
Beachten Sie außerdem, dass die richtige Syntax für Escape-Strings ist:
E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
Beachten Sie das E'...'
.
Ab Version 9.1 ist die Einstellung standard_conforming_strings
ist standardmäßig aktiviert, wodurch dies erzwungen wird.