json - Pentaho 数据集成在 json 中使用插入/更新匹配键
问题描述
我想在 postgresql 数据库的表中执行插入/更新操作。该表有几列,包括 jsonb 类型的“详细信息”列,它是我大部分数据的目标。
除了要在 details 对象中匹配的 key id 之外,一切都很好。Postgres 具有'->>' 运算符来从 json 对象中获取键。因此我可以这样查询:
select * from customers where details ->> 'myId' = '1234'
这在 Pentaho 中是否存在?当我打开插入/更新界面时,我只能选择“表字段”下的列名,理想情况下我想写“详细信息->>'myId'”。
这可能吗,还是我必须编写自己的课程?我不知道如何处理它。我可以得到插入/更新类的转储然后修改它吗?
非常感谢您的帮助
解决方案
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
推荐阅读
- c# - 如何将 SQLite 表数据获取到 ArrayList
- xml - xslt 1.0 xml在2个节点之间合并
- r - 如何用两条线在 r 中绘制绘图
- phoenix-framework - Elixir:具有多个地图匹配选项的模式匹配
- mysql - 查询提取数据库中最古老的 50 首歌曲与独特艺术家的意外结果
- java - 如何将 Array (ResultSet JDBC) 转换为 List?
- python - matplotlib x 轴值
- javascript - javascript 与 websocket 中的 pub/sub 模式
- sql - SQL 查询以获取具有 2 个表(多对多)的员工的经理姓名
- sql-server - 在 SQL Server 中为一对多关系编写的代码是什么?