Catatan: Saya menemukan masalah ini sendiri di MS Windows dan saya sudah punya sesuatu untuk dimasukkan ke dalam psql menggunakan stdin-nya. Saya harus menggabungkan input. Dan di situlah ia menjadi sangat rumit. Saya pikir untuk berbagi sesuatu yang agak berharga dalam contoh pendapat saya, selain jawaban Erwin, jadi saya mempostingnya di sini sebagai jawaban kalau-kalau ada orang lain yang juga perlu "menggunakan variabel" dengan \copy
saat memasukkan data ke stdin pada platform Windows.
Jika Anda ingin menyalin beberapa data dari stdin dan menggunakan "variabel" untuk \copy
pada saat yang sama, semuanya mungkin menjadi rumit dengan tanda kurung keluar. Di bawah ini adalah contoh bagaimana hal itu dapat dilakukan. Catat pelarian tiga tanda (sic!) Untuk tanda kurung yang menyertakan nama kolom
@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