PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Nenhuma senha fornecida / parâmetro posicional não encontrado PostgreSQL - Powershell


SET é um alias para Set-Variable , mas as variáveis ​​do Powershell não são variáveis ​​de ambiente. Para definir uma variável de ambiente, você precisa usar o $env: alcance. Tentar:
$env:PGPASSWORD = 'myPwd';

Veja também aqui para mais informações sobre variáveis ​​de ambiente.

Além disso, não acho que você possa se safar colocando entrada bruta na linha de comando como essa no PowerShell. Acho que vai tratar as coisas como comandos separados, mas posso estar errado.

Você também pode querer usar a opção de comando (-c ) e o símbolo de parada de análise do PowerShell (--% ) quando você chama o psql para impedir que o PowerShell analise sua string de comando:
.\psql --% -U postgres -w MyDatabase -c "copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';"

Ou defina os comandos para uma variável com here-strings e canalize isso para o psql:
$query = @'
copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ',';
'@
$query | .\psql -U postgres -w MyDatabase

Ou cerca de uma dúzia de outras maneiras de chamar um executável.