1

私は輪になって回っているので、助けが必要です。

batファイルを介してスケジュールされたタスクであるデータベースに対して.sqlを実行できるようにしたい。ただし、batファイルを手動で実行すると、パスワードの入力を求められます。パスワードを入力すると、そのように言われます。

"psql: FATAL: password authentication failed for user "(my windows login)"
'-h' is not recognised as an internal or external command, 
operable program or batch file. 

現時点で私のコウモリは読んでいます...

@echo off
"D:\Program Files (x86)\PostgreSQL\9.1\bin\psql.exe"
-h localhost -U postgres -d database_name -f D:/scripts/SQL/test.sql
pause

まず、パスワードリクエストを入力するためにどのcmdを追加する必要がありますか

.sqlをロードするために、ステートメントの残りの部分で何が間違っているのですか?

ありがとう

4

2 に答える 2

2

この行を設定ファイル(pg_hba.conf)に追加することで、認証なしでローカル接続を許可するようにpostgresに指示できます

local      <database>  <user>  trust

http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html

于 2012-06-13T14:18:10.450 に答える
1

バッチファイルの1行に入れる必要があるすべて(2行あるようです):

@echo off
"D:\Program Files (x86)\PostgreSQL\9.1\bin\psql.exe" -h localhost -U postgres -d database_name -f D:/scripts/SQL/test.sql
pause

パスワードプロンプトを回避するには、psqlを呼び出す前に環境変数PGPASSWORDを設定します。

@echo off
setlocal
set PGPASSWORD=my_very_secret_password
"D:\Program Files (x86)\PostgreSQL\9.1\bin\psql.exe" -h localhost -U postgres -d database_name -f D:/scripts/SQL/test.sql
pause
endlocal

setlocal / endlocalコマンドは、バッチファイルの実行後に変数がクリアされたことを確認するためにあります。

バッチファイルにプレーンテキストのパスワードが含まれないようにするには、パスワードを含むpgpass.confファイルを作成します。詳細については、マニュアルを参照してください:http ://www.postgresql.org/docs/current/static/libpq-pgpass.html

于 2012-06-13T14:17:53.543 に答える