Apakah Anda menjalankan pernyataan sebagai pengguna super di psql dan sebagai pengguna lain melalui JDBC?
manual memberitahu kami
:
Anda bisa menghindari pembatasan ini dengan membungkus pernyataan dalam fungsi dengan SECURITY DEFINER
dimiliki oleh superuser. Waspadai risiko keamanan . Anda mungkin juga ingin MENcabut
semua hak dari publik dan hanya GRANT
kepada pengguna yang dipilih. Bisa terlihat seperti ini:
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;
Perlu diketahui juga bahwa sintaks yang tepat untuk escape string adalah:
E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
Perhatikan E'...'
.
Pada versi 9.1, pengaturan standard_conforming_strings
aktif secara default, menerapkan ini.