从postgres日志获取可执行查询

时间:2017-08-11 07:54:57

标签: sql logging postgresql-9.2

我在PostgreSQL 9.2版中激活了SQL语句的日志记录。 它开始写这样的日志语句:

  

日志:执行:UPDATE qrz_TRIGGERS SET JOB_NAME = $ 1,   JOB_GROUP = $ 2,IS_VOLATILE = $ 3,DESCRIPTION = $ 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 在哪里TRIGGER_NAME = $ 14 AND   TRIGGER_GROUP = 15美元

     

细节:参数:$ 1 ='dssSchedulerJob',$ 2 ='DEFAULT',$ 3 ='f',$ 4> = NULL,$ 5 ='1501855865730',$ 6 ='1501855855730',$ 7 =   '阻止',$ 8 ='简单',$ 9 ='1252939835730',$ 10 ='0',$ 11 =   NULL,$ 12 ='0',$ 13 = '5',$ 14 ='dssTrigger',$ 15 ='DEFAULT'

我想采用这个SQL并在pgAdmin3中运行分析,例如。

有人知道如何启用Postgres来区分整数和字符串。或者更好地在需要引用的参数和不需要引用的参数之间。

获取参数并将它们放在SQL中的正确位置非常麻烦。写一个简单的工具来帮助这里也是不可能或非常困难的,因为它不知道是否需要引用。

感谢。

1 个答案:

答案 0 :(得分:0)

因为你可以看到所有值但是null在这里是单引号。您可以将它们传递给准备好的声明,因为它们在此处提供。一个简短的例子:

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:以用作语句的参数