Lưu ý: Tôi đã vấp phải sự cố này trên MS Windows và tôi đã có một cái gì đó để cung cấp cho psql bằng cách sử dụng stdin của nó. Tôi đã phải kết hợp đầu vào. Và đó là nơi nó thực sự khó khăn. Tôi nghĩ rằng để chia sẻ một phần có giá trị trong ví dụ ý kiến của tôi, bên cạnh câu trả lời của Erwin, vì vậy tôi sẽ đăng nó ở đây như một câu trả lời trong trường hợp người khác cũng cần "sử dụng biến" \copy
trong khi cung cấp dữ liệu vào stdin trên nền tảng Windows.
Nếu bạn muốn sao chép một số dữ liệu từ stdin và sử dụng "biến" \copy
cùng một lúc, mọi thứ có thể trở nên khó khăn với dấu ngoặc đơn thoát. Dưới đây là một ví dụ làm thế nào nó có thể được thực hiện. Lưu ý thoát ba dấu ba (sic!) Cho dấu ngoặc đơn tên cột
@echo off
set TBL=wd
(
echo truncate %TBL%;
echo \copy %TBL% (depth,path,name,created,accessed,modified,size^^^) from stdin csv
C:\msys64\usr\bin\find ^
"e:/somepath" ^
-type f -printf "%%d,\"%%h\",\"%%f\",\"%%t\",\"%%a\",\"%%c\",%%s\n"
) | "C:\Program Files\PostgreSQL\9.4\bin\psql.exe" -h some.server -U user dbname