【问题标题】:Pentaho data integration using Insert / Update match on key in jsonPentaho 数据集成在 json 中使用插入/更新匹配键
【发布时间】:2018-08-28 13:05:31
【问题描述】:

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

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

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

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

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

非常感谢您的帮助

【问题讨论】:

    标签: json etl kettle pentaho-data-integration


    【解决方案1】:

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

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

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

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

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

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

    How to UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) in PostgreSQL?

    希望对您有所帮助。欢迎来到 s.o. :D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多