sql >> Databasteknik >  >> RDS >> PostgreSQL

Inget lösenord tillhandahålls / Positionsparameter hittades inte PostgreSQL - Powershell

SET är ett alias för Set-Variable , men Powershell-variabler är inte miljövariabler. För att ställa in en miljövariabel måste du använda $env: omfattning. Försök:

$env:PGPASSWORD = 'myPwd';

Se även här för mer om miljövariabler.

Dessutom tror jag inte att du kan komma undan med att lägga rå input på kommandoraden så i PowerShell. Jag tror att det kommer att behandla saker som separata kommandon, men jag kan ha fel.

Du kanske också vill använda kommandoväxeln (-c ) och PowerShell slutar tolka symbolen (--% ) när du anropar psql för att förhindra PowerShell från att analysera din kommandosträng:

.\psql --% -U postgres -w MyDatabase -c "copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';"

Eller ställ in kommandona till en variabel med here-strings och pipe that till psql:

$query = @'
copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';
'@
$query | .\psql -U postgres -w MyDatabase

Eller ett dussintal andra sätt att anropa en körbar fil.




  1. Mysql-tillägget är utfasat och kommer att tas bort i framtiden:använd mysqli eller PDO istället

  2. Fel när data infogades med enkla citattecken mellan sig

  3. Oracle Streams steg för steg replikeringsexempel

  4. Lägger ut utdata från Postgres \i indata till en fil?