2014-09-22 106 views
0

我想通过pgAdmin在pgAgent的特定时间设置批处理文件路径的步骤。但是,当我运行它失败,在步骤统计我得到这个输出pgAgent计划作业在Windows上失败

C:\ Windows \ System32下> C:\ PostgreSQL的\ run.bat中 “psql的”不​​被识别为一个内部或外部命令, 可操作的程序或批处理文件。

详情:

Postgresql 9.3.5 on local system account (Current User) 
pgAdmin 1.18.1 
pgAgent via stack builder with Administrator account (Current User) 

的run.bat我只有两个声明

@echo off 
psql -h localhost -p 5433 -U postgres -d test -a -f "test.sql" 

PSQL在系统路径变量,并能够访问它CMD。当我手动运行该bat文件时,它正在执行而不会失败。但是当我在pgAgent作业中给出批处理文件路径(C:\postgresql\run.bat)时,它在统计中给出了这个错误。

我的配置有什么问题吗?为什么它总是那么C:\Windows\system32>

编辑:

的run.bat文件

@ECHO OFF 

SET LBSDatabaseName=Test 
SET dbHost=localhost 
SET dbPort=5434 
SET dbUser=postgres 
SET logFile=DbInstall.log 
SET sqlFolder="D:\SOURCECODE\archivescripts"   

"C:\Program Files (x86)\PostgreSQL\9.3\bin\psql.exe" -h "%dbHost%" -p "%dbPort%" -d "%LBSDatabaseName%" -U "%dbUser%" -L "%logFile%" -q -f "%sqlFolder%\Archive.sql" 

Archive.sql

update "Archive".emp set "FirstName"='Srikanth Dyapa'; 
+0

你需要给其中'psql'位于你的'run.bat' – 2014-09-22 04:35:00

+0

路径上的所有hosts告诉我的绝对路径的'psql'(在我的例子中是'C:\ Program Files \ PostgreSQL \ 9.3 \ bin \ psql.exe') – 2014-09-22 04:38:09

+0

@WingedPanther我试过你的建议,现在我看到它的状态为Running,它没有更新表记录,可能是什么问题呢? – 2014-09-22 05:36:11

回答

0

例如,

d:\ pgAgent_jobs

是其中psql所在的路径。

d:\ pgAgent_jobs \脚本\ TEST.SQL

是在我test.sql放置的路径。

d:\ pgAgent_jobs \脚本\ psqlss.bat

是我蝙蝠文件来执行test.sql

所以我蝙蝠文件会像下面

@echo off 

cd /D D:\\pgAgent_jobs 

psql -h localhost -p 5432 -U postgres -d db_name -a -f "D:\pgAgent_jobs\scripts\test.sql" 

注意:我的pg_hba。CONF配置有trust的,这就是为什么我不传递任何password在上面psql命令

+0

我更新了我的问题,根据您的建议,但现在它处于运行状态,但不更新表记录,你能帮我找出问题.... – 2014-09-22 06:49:42

+0

@DyapaSrikanth你确定你的更新是否正确运行? – 2014-09-22 06:52:57

+0

一个建议>在你的'run.bat'(最后一行)添加一行'pause'并手动运行该bat文件(只需双击) – 2014-09-22 06:55:49