PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Aucun mot de passe fourni / Paramètre de position introuvable PostgreSQL - Powershell

SET est un alias pour Set-Variable , mais les variables Powershell ne sont pas des variables d'environnement. Pour définir une variable d'environnement, vous devez utiliser le $env: portée. Essayez :

$env:PGPASSWORD = 'myPwd';

Voir aussi ici pour en savoir plus sur les variables d'environnement.

De plus, je ne pense pas que vous puissiez vous en sortir en mettant une entrée brute sur la ligne de commande comme celle de PowerShell. Je pense qu'il traitera les choses comme des commandes distinctes, mais je peux me tromper.

Vous pouvez également utiliser le commutateur de commande (-c ) et le symbole d'arrêt d'analyse PowerShell (--% ) lorsque vous appelez psql pour empêcher PowerShell d'analyser votre chaîne de commande :

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

Ou définissez les commandes sur une variable avec des chaînes ici et dirigez-les vers psql :

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

Ou environ une douzaine d'autres façons d'appeler un exécutable.