我在圈子里走来走去,所以需要一些帮助。
我希望能够通过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
由于
答案 0 :(得分:1)
通过将此行添加到您的配置文件(pg_hba.conf
),您可以告诉postgres允许本地连接而无需身份验证
local <database> <user> trust
http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html
答案 1 :(得分:0)
所有这些都需要在批处理文件中单行(看起来你有两行):
@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