Pentaho ETL连接PostgreSQL如何指定Schema实现动态切换
Pentaho 连接PostgreSQL指定Schema的可落地方案
Pentaho原生PostgreSQL连接器确实没有单独的Schema输入项,不需要改源码或者换第三方插件,以下三种方式都能实现指定Schema,且全支持变量替换做动态切换:
方法1:连接选项卡配置currentSchema参数(最稳定,优先用)
打开数据库连接配置页,切到「选项」标签,在自定义参数列表新增参数:
- 参数名:
currentSchema - 参数值:填写目标Schema名称,需要动态切换时直接写Pentaho变量占位符即可,比如
${target_schema}
这个参数是PostgreSQL官方JDBC驱动原生支持的配置,配置完成后该连接下所有表输入、表输出、SQL执行组件默认都会访问指定Schema,不需要每次给表名加Schema前缀。
- 参数名:
方法2:JDBC URL拼接参数
如果是手动填写JDBC URL建立连接,直接在URL末尾追加currentSchema参数即可,固定Schema写法示例:
jdbc:postgresql://127.0.0.1:5432/your_db?currentSchema=sales动态变量写法示例:
jdbc:postgresql://${db_host}:${db_port}/${db_name}?currentSchema=${target_schema}如果URL已经带了其他连接参数,用
&拼接currentSchema即可,比如?ssl=true¤tSchema=${target_schema}。方法3:连接初始化SQL设置search_path
打开连接配置的「高级」标签,在「连接建立后立即执行的SQL」输入框填入会话级配置命令:
SET search_path TO ${target_schema};这种方式会在连接刚建立时修改当前会话的Schema搜索路径,效果和前两种一致,适合需要同时配置多个会话级参数的场景。
配置完成后可以在表输入组件执行
SELECT current_schema();做校验,返回结果和你配置的Schema一致就代表生效。做多Schema循环抽取时,只需要在作业层遍历Schema名列表,给${target_schema}变量循环赋值,就能用同一个数据库连接完成同库多Schema的数据采集,不需要为每个Schema单独建连接配置。
内容的提问来源于stack exchange,提问作者Andrey
相关产品推荐
相关产品推荐

