首页 > 解决方案 > Pentaho 数据集成在 json 中使用插入/更新匹配键

问题描述

我想在 postgresql 数据库的表中执行插入/更新操作。该表有几列,包括 jsonb 类型的“详细信息”列,它是我大部分数据的目标。

除了要在 details 对象中匹配的 key id 之外,一切都很好。Postgres 具有'->>' 运算符来从 json 对象中获取键。因此我可以这样查询:

select * from customers where details ->> 'myId' = '1234'

这在 Pentaho 中是否存在?当我打开插入/更新界面时,我只能选择“表字段”下的列名,理想情况下我想写“详细信息->>'myId'”。

这可能吗,还是我必须编写自己的课程?我不知道如何处理它。我可以得到插入/更新类的转储然后修改它吗?

非常感谢您的帮助

标签: jsonetlkettlepentaho-data-integration

解决方案


SQL json 查询语法现在所有 sql 方言都允许,所以这是你必须通过直接的 sql 查询来完成的事情。首先从表输入步骤中使用 json 运算符进行选择,这允许您使用 json sql 运算符构建查询

select * from customers where details ->> 'myId' = '1234'

并将行传递到下一步,然后使用数据库连接步骤

insert into my_table (field1,field2,field3...) values ('?','?','?'...);

并从前面的步骤中选择参数字段名并使用?查询中的占位符。

如果你想做一个 upsertion(插入/更新)它取决于你使用的 sql 引擎/方言,在 postgres 中你可以在这篇文章中构建一个 upsertion 查询,如下所示:

如何在 PostgreSQL 中进行 UPSERT(合并、插入……重复更新)?

希望能帮助到你。欢迎来到 :D


推荐阅读