PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Nessuna password fornita / Parametro posizionale non trovato PostgreSQL - Powershell

SET è un alias per Set-Variable , ma le variabili di Powershell non sono variabili di ambiente. Per impostare una variabile di ambiente, devi usare $env: scopo. Prova:

$env:PGPASSWORD = 'myPwd';

Vedi anche qui per ulteriori informazioni sulle variabili di ambiente.

Inoltre, non penso che tu possa farla franca inserendo input non elaborati sulla riga di comando in PowerShell. Penso che tratterà le cose come comandi separati, ma potrei sbagliarmi.

Potresti anche voler usare l'opzione di comando (-c ) e il simbolo di interruzione dell'analisi di PowerShell (--% ) quando chiami psql per impedire a PowerShell di analizzare la stringa di comando:

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

Oppure imposta i comandi su una variabile con here-strings e reindirizza a psql:

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

O circa una dozzina di altri modi per chiamare un eseguibile.