Nói chung, thay thế biến hoạt động với các lệnh meta (bắt đầu bằng dấu gạch chéo ngược), nhưng \copy
là một ngoại lệ, như được ghi lại trong trang web
của psql :
Tôi không đồng ý với nhận xét của @BaconBits cho câu hỏi EXECUTE
của plpgsql có thể là câu trả lời. Câu lệnh phía máy chủ, động hoặc cách khác, sẽ không truy cập vào hệ thống tệp phía máy khách, trái với \copy
. Bạn có thể sử dụng COPY
thay vào đó, nhưng nó yêu cầu phải là superuser và tệp đó mới có thể truy cập được vào postgres
người dùng trên máy chủ.
Tôi tin rằng \copy
từ một tên tệp biến, biến đó phải được đưa vào tập lệnh trước psql
đọc nó. Bạn có thể tích hợp tập lệnh SQL vào một tập lệnh shell và cấp nó vào psql
dưới dạng chuỗi ở đây có thể mua được hoặc lọc nó qua sed
hoặc perl
hoặc bất kỳ phương thức unix-ish nào tương tự.