2015-08-11 4 views
0

Я пытаюсь создать простой скрипт, который выводит запрос на csv в powershell. Тем не менее, он постоянно возвращается следующее сообщение об ошибке:Отсутствует пароль Поставляется/Позиция Параметр не найден PostgreSQL - Powershell

Psql: fe_sendauth: пароль не поставляется

Я попытался обнажая пароль, как это будет безопасной окружающей среды, но видел предложения использовать pgpass, но не реальное объяснение о том, как для реализации.

Set-Location 'E:\Program Files\PostgreSQL\9.1\bin\'; 
SET 'PGPASSWORD = myPwd'; 
.\psql -U postgres -w MyDatabase 
copy {'SELECT * FROM table';} TO 'C:\Users\e\Desktop\test1.csv' CSV DELIMITER ','; 

ответ

1

SET является псевдонимом для Set-Variable, но Powershell переменные не являются переменными среды. Чтобы установить переменную среды, вам необходимо использовать область $env:. Попытайтесь:

$env:PGPASSWORD = 'myPwd'; 

См. Также here для получения дополнительных сведений о переменных среды.

Кроме того, я не думаю, что вы можете уйти от ввода сырого ввода в командной строке, как в PowerShell. Я думаю, что он будет рассматривать вещи как отдельные команды, но я могу ошибаться.

Вы также можете использовать переключатель команды (-c) и символ PowerShell остановки синтаксического анализа (--%) при вызове Psql для предотвращения PowerShell из синтаксического анализа командной строки:

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

Или установите команды переменная с здесь-струнными и трубы, чтобы Psql:

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

Или около десятка других способов вызова исполняемого файла.

+0

Спасибо за ответ. Я больше не получаю приглашение пароля. Я разложил ваше предложение на две строки (объявление psql для databse и другое для команды sql copy). Это работает, но мой скрипт висит с открытым подключением к базе данных, ожидая, когда я войду в свою команду sql. На самом деле он не выполняет копию, как мне нужно. Я правильно ответил на этот вопрос, но был бы очень признателен, если бы вы могли дать некоторую обратную связь по этой последней проблеме. – 530529

+0

@ 530529 А я полагаю, что забыл цитаты из команды. –

+0

Запуск с кавычками приводит к появлению предупреждающего сообщения с игнорированием аргумента -c и другого сообщения, игнорирующего всю копию. Несмотря на предупреждения, он регистрируется в моей базе данных и снова висит в ожидании инструкций. MyDatabase = # _ – 530529

Смежные вопросы