Bạn có thực thi câu lệnh với tư cách là superuser trong psql và với tư cách là người dùng khác qua JDBC?
hướng dẫn sử dụng cho chúng tôi biết
:
Bạn có thể phá vỡ hạn chế này bằng cách gói câu lệnh trong một hàm với SECURITY DEFINER
thuộc sở hữu của một siêu người dùng. Hãy lưu ý rủi ro bảo mật . Bạn cũng có thể muốn REVOKE
tất cả các quyền từ công khai và chỉ GRANT
cho những người dùng được chọn. Có thể trông như thế này:
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;
Ngoài ra, hãy lưu ý rằng cú pháp thích hợp cho chuỗi thoát là:
E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
Lưu ý E'...'
.
Kể từ phiên bản 9.1, cài đặt standard_conforming_strings
được bật theo mặc định, thực thi điều này.