SET
adalah alias untuk Set-Variable
, tetapi variabel Powershell bukan variabel lingkungan. Untuk menyetel variabel lingkungan, Anda perlu menggunakan $env:
cakupan. Coba:
$env:PGPASSWORD = 'myPwd';
Lihat juga di sini untuk lebih lanjut tentang variabel lingkungan.
Juga, saya tidak berpikir Anda bisa lolos dengan meletakkan input mentah pada baris perintah seperti itu di PowerShell. Saya pikir itu akan memperlakukan hal-hal sebagai perintah terpisah, tapi saya bisa saja salah.
Anda mungkin juga ingin menggunakan sakelar perintah (-c
) dan simbol penguraian berhenti PowerShell (--%
) saat Anda memanggil psql untuk mencegah PowerShell mengurai string perintah Anda:
.\psql --% -U postgres -w MyDatabase -c "copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';"
Atau atur perintah ke variabel dengan string di sini dan pipa itu ke psql:
$query = @'
copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';
'@
$query | .\psql -U postgres -w MyDatabase
Atau sekitar selusin cara lain untuk memanggil executable.