从 postgres 日志中获取可执行查询
Get executable query from postgres log
我在 PostgreSQL 版本 9.2 中激活了 SQL 语句的日志记录。
它开始写这样的日志语句:
LOG: execute : UPDATE qrz_TRIGGERS SET JOB_NAME = ,
JOB_GROUP = , IS_VOLATILE = , DESCRIPTION = , NEXT_FIRE_TIME =
, PREV_FIRE_TIME = , TRIGGER_STATE = , TRIGGER_TYPE
= , START_TIME = , END_TIME = , CALENDAR_NAME = , MISFIRE_INSTR = , PRIORITY = WHERE TRIGGER_NAME = AND
TRIGGER_GROUP =
DETAIL: parameters: = 'dssSchedulerJob', = 'DEFAULT', = 'f', > = NULL, = '1501855865730', = '1501855855730', =
'BLOCKED', = 'SIMPLE', = '1252939835730', = '0', $ 11 =
NULL, = '0', = '5', = 'dssTrigger', = 'DEFAULT'
我想以这个 SQL 和 运行 为例,在 pgAdmin3 中进行分析。
有人知道如何让 Postgres 区分整数和字符串吗?或者更好地区分需要引号和不需要引号的参数。
在SQL中把参数取到合适的地方就很乱了。另外写一个简单的工具来帮助这里是不可能的或非常困难的,因为它不知道是否需要引号。
谢谢。
如您所见,此处除 null 外的所有值都用单引号引起来。您可以将它们传递给准备好的声明,因为它们在此处提供。一个简短的例子:
t=# prepare a(int) as (select /2);
PREPARE
t=# execute a('4');
?column?
----------
2
(1 row)
t=# execute a('32');
?column?
----------
16
(1 row)
因此您可以按原样使用 LOG: execute
部分来准备语句并解析 DETAIL: parameters:
以用作语句的参数
我在 PostgreSQL 版本 9.2 中激活了 SQL 语句的日志记录。 它开始写这样的日志语句:
LOG: execute : UPDATE qrz_TRIGGERS SET JOB_NAME = , JOB_GROUP = , IS_VOLATILE = , DESCRIPTION = , NEXT_FIRE_TIME = , PREV_FIRE_TIME = , TRIGGER_STATE = , TRIGGER_TYPE = , START_TIME = , END_TIME = , CALENDAR_NAME = , MISFIRE_INSTR = , PRIORITY = WHERE TRIGGER_NAME = AND TRIGGER_GROUP =
DETAIL: parameters: = 'dssSchedulerJob', = 'DEFAULT', = 'f', > = NULL, = '1501855865730', = '1501855855730', = 'BLOCKED', = 'SIMPLE', = '1252939835730', = '0', $ 11 = NULL, = '0', = '5', = 'dssTrigger', = 'DEFAULT'
我想以这个 SQL 和 运行 为例,在 pgAdmin3 中进行分析。
有人知道如何让 Postgres 区分整数和字符串吗?或者更好地区分需要引号和不需要引号的参数。
在SQL中把参数取到合适的地方就很乱了。另外写一个简单的工具来帮助这里是不可能的或非常困难的,因为它不知道是否需要引号。
谢谢。
如您所见,此处除 null 外的所有值都用单引号引起来。您可以将它们传递给准备好的声明,因为它们在此处提供。一个简短的例子:
t=# prepare a(int) as (select /2);
PREPARE
t=# execute a('4');
?column?
----------
2
(1 row)
t=# execute a('32');
?column?
----------
16
(1 row)
因此您可以按原样使用 LOG: execute
部分来准备语句并解析 DETAIL: parameters:
以用作语句的参数