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

Lưu đầu ra từ hàm sql vào tệp csv (COPY) với tên tệp động

Một ví dụ được tấn công nhanh chóng cùng nhau bằng cách sử dụng PLPGSQL thay vì SQL .

Lưu ý:phải được tạo làm superuser.

Thay thế truy vấn, v.v ... trong hàm thành bất cứ thứ gì bạn cần và bạn có thể thêm nhiều tham số đầu vào hơn vào hàm để tạo (các) tệp truy vấn hoặc tệp đầu ra của bạn theo cách khác nhau tùy thuộc vào các tham số đầu vào đó là gì.

CREATE OR REPLACE FUNCTION copy_out_example ( p_path TEXT, p_filename_prefix TEXT, OUT file_and_path TEXT )
RETURNS TEXT AS
$func$
DECLARE
    qry TEXT;
BEGIN
    file_and_path := RTRIM(p_path,'/') || '/' || p_filename_prefix || '_' || ceil(random() * 1000000)::TEXT || '.csv';

    qry := FORMAT('COPY (select * from pg_catalog.pg_class) TO %L CSV HEADER',file_and_path);
    EXECUTE qry;
END;
$func$ LANGUAGE plpgsql STRICT SECURITY DEFINER;

SELECT copy_out_example('/path/to/the/file','some_test_file');

Kết quả trong một tệp như '/path/to/the/file/some_test_file_994216.csv'




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm thực thi nhanh hơn mà không có công cụ sửa đổi NGHIÊM TÚC?

  2. Cách tốt nhất để xóa hàng triệu hàng theo ID

  3. Người dùng ứng dụng so với Bảo mật cấp hàng

  4. Các tình huống thất bại PostgreSQL phổ biến nhất

  5. hasMany được gọi với một cái gì đó không phải là một phiên bản của Sequelize.Model