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'