Informatica非缓存Lookup绑定参数致PostgreSQL日志报错求助
解决PostgreSQL日志中Informatica Lookup的语法错误问题
问题根源
Informatica PowerCenter 10.4.1搭配DataDirect 7.1 PostgreSQL驱动时,对SQL覆盖中重复引用的命名绑定参数(?i_PARM?)处理异常,将其错误转换为$i_PARM$2这类PostgreSQL无法识别的格式,导致数据库日志出现语法错误——尽管Lookup本身运行正常且结果正确。
解决方法
复用绑定参数时使用局部变量:
避免在SQL中多次重复引用同一个绑定参数,先通过子查询或WITH子句将参数赋值给局部变量,再在CASE语句中复用该变量。修改后的SQL示例:WITH param_def AS ( SELECT ?i_PARM?::integer AS input_param ) SELECT CASE WHEN input_param = 0 THEN 'param = 0' WHEN input_param = 1 THEN 'param = 1' WHEN input_param IS NULL THEN 'param = null' END AS PARM_VALUE FROM param_def, public.dual或者使用子查询方式:
SELECT CASE WHEN input_param = 0 THEN 'param = 0' WHEN input_param = 1 THEN 'param = 1' WHEN input_param IS NULL THEN 'param = null' END AS PARM_VALUE FROM (SELECT ?i_PARM?::integer AS input_param) AS p, public.dual调整DataDirect驱动连接属性:
在Informatica的数据库连接配置中,针对DataDirect驱动添加或修改以下属性:- 设置
UseNamedParameters=true,确保驱动正确处理命名绑定参数 - 将
ParameterStyle设置为PostgreSQL,匹配PostgreSQL的参数占位符格式
- 设置
升级DataDirect驱动版本:
DataDirect 7.1版本对PostgreSQL 14的兼容性有限,升级到更高版本(如适配PostgreSQL 14的最新DataDirect驱动)可修复这类参数转换的兼容性问题。
内容的提问来源于stack exchange,提问作者SteveTR
相关产品推荐
相关产品推荐

