PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

quyền bị từ chối cố gắng đọc tệp csv bằng JDBC cho cơ sở dữ liệu postgres

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate:Tạo chỉ mục

  2. RailsTutorial 3.2 Ch 11 - Lỗi cú pháp PostgreSQL phá vỡ nguồn cấp trạng thái

  3. Triển khai bộ lọc tìm kiếm cho tất cả các cột

  4. Tính Tổng tích lũy trong PostgreSQL

  5. Cú pháp cho row_to_json với sqlalchemy