2017-08-11 47 views
1

我激活了PostgreSQL 9.2版中SQL語句的日誌記錄。 它開始寫這樣日誌語句:從postgres日誌中獲取可執行的查詢

LOG:執行:UPDATE qrz_TRIGGERS SET JOB_NAME = $ 1, JOB_GROUP = $ 2,IS_VOLATILE = $ 3描述= $ 4 NEXT_FIRE_TIME = $ 5 PREV_FIRE_TIME = $ 6 TRIGGER_STATE = $ 7,TRIGGER_TYPE = $ 8中,START_TIME = $ 9 END_TIME = $ 10 CALENDAR_NAME = $ 11 MISFIRE_INSTR = $ 12 PRIORITY = $ 13 WHERE TRIGGER_NAME = $ 14和第 TRIGGER_GROUP = $ 15

DETAIL:參數:$ 1 = 'dssSchedulerJob' ,$ 2 ='DEFAULT',$ 3 ='f',$ 4> = NULL,$ 5 ='1501855865730',$ 6 ='1501855855730',$ 7 = 'BLOCKED',$ 8 ='SIMPLE',$ 9 ='1252939835730',$ 10 ='0',$ 11 = NULL,$ 12 ='0',$ 13 = '5', $ 14 ='dssTrigger',$ 15 ='DEFAULT'

我想採用這個SQL並運行在pgAdmin3內部進行分析。

有人知道如何使Postgres區分整數和字符串。或者在需要引用的參數和不引用的參數之間更好。

將參數放到SQL中的正確位置非常麻煩。也寫一個簡單的工具來幫助這裏是不可能的或非常困難的,因爲它不知道是否需要引號。

謝謝。

回答

0

你可以看到所有的值,但這裏的空值是用單引號引起來的。您可以將它們傳遞給準備好的聲明,因爲它們在此處提供。簡單例子:

t=# prepare a(int) as (select $1/2); 
PREPARE 
t=# execute a('4'); 
?column? 
---------- 
     2 
(1 row) 

t=# execute a('32'); 
?column? 
---------- 
     16 
(1 row) 

所以你可以用LOG: execute一部分是準備語句,並解析DETAIL: parameters:作爲參數來使用的語句

+0

這意味着我可以使用的值與引號,不要緊,如果他們是字符串或整型值? –

+0

有一個「默認強制轉換」整數作爲文本到整數,所以它不會允許「99a」作爲整數傳遞,但是「99」會允許。 –