Điều đó không thể xảy ra với COPY
của SQL yêu cầu. COPY
chỉ sao chép từ một tệp hoặc STDIN .
Bạn có thể ghi nội dung của biến vào một tệp hoặc chuyển nó qua STDIN. Chỉ có ý nghĩa đối với nhiều hơn một vài hàng.
Tôi nghĩ rằng tôi đã hiểu sai câu hỏi của bạn trước khi cập nhật, bạn có thể không cần điều này:
Đường dẫn tệp không thể được trao đổi giống như các mục dữ liệu khác và bạn không thể sử dụng một câu lệnh đã chuẩn bị cho điều đó. Xây dựng toàn bộ trước khi thực thi hoặc sử dụng SQL động với chức năng phía máy chủ như:
CREATE OR REPLACE FUNCTION f_cp(_file text)
RETURNS void AS
$BODY$
BEGIN
EXECUTE format($$COPY zip_codes FROM %L DELIMITER ',' CSV$$, $1);
END
$BODY$
LANGUAGE plpgsql;
Gọi:
SELECT f_cp('/var/lib/postgres/sync/myfile.csv')
format()
yêu cầu Postgres 9.1 trở lên.