2014-09-22 102 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