【问题标题】:Insert JSON into multiple tables on Database in Mule将 JSON 插入数据库中 Mule 的多个表中
【发布时间】:2016-05-14 13:29:32
【问题描述】:

我正在尝试使用 Mule ESB 将 JSON 的内容插入 MySql 数据库。 JSON 看起来像:

{
 "id":106636,
 "client_id":9999,
 "comments":"Credit",
 "salesman_name":"Salvador Dali", 
 "cart_items":[
              {"citem_id":1066819,"quantity":3}, 
              {"citem_id":1066820,"quantity":10}
            ]
}

在 mule 上,我想在如下步骤中插入所有数据:

  • 插入 INTO order_header(id,client_id,cmets,salesman_name)
  • 插入 INTO order_detail(id,citem_id,quantity)
  • 插入 INTO order_detail(id,citem_id,quantity)

目前我在 Mule 上已经走了这么远: MuleSoft Flow

【问题讨论】:

    标签: json mule esb


    【解决方案1】:

    好的。由于您已经在流程中将 JSON 转换为 Object,因此您可以使用对象引用(如 obj.id、obj.client_id 等)引用各个值。

    1. 接下来获取数据库连接器。
    2. 在“连接器配置”中配置您的 MySQL 数据库。
    3. 操作:选择“批量执行”
    4. 在“查询文本”中:编写多个 INSERT 查询并从 Object 传递适当的值(从 JSON 转换而来)。请记住在查询文本中使用分号 (;) 分隔多个查询。

    就是这样!!如果您遇到任何问题,请告诉我。希望它对你有用..

    【讨论】:

    • 我觉得我表达得很糟糕,cart_items 的数量如果是动态的,所以我无法对cart_items 的数量进行固定查询。
    • 好的。知道了 !!因此,cart_items 的数量将决定 ORDER_DETAIL 表的“INSERT”语句的数量。试试这个: 1. 让 1 个 DB 连接器发布 JSONtoObject 连接器。 2. 添加逻辑以仅对 ORDER_HEADER 表使用 1 个 INSERT 语句。 3. 然后,添加一个“For each”组件,该组件将在 cart_items 集合上循环。 JSON 中的对象应该有一个 cart_items 的集合。 4. 在“For each”中添加另一个数据库组件,并为 ORDER_DETAIL 表添加 1 个 INSERT 语句。 For each 将自动遍历 cart_item 集合并执行所需的“插入”。
    【解决方案2】:

    这里有一篇优秀的文章http://www.dotnetfunda.com/articles/show/2078/parse-json-keys-to-insert-records-into-postgresql-database-using-mule 那应该有帮助。您可能需要修改,因为您需要先写入 order_header 数据,然后对 order_detail 使用集合拆分器并将整个包装在事务中。

    【讨论】:

      【解决方案3】:

      使用数据库连接器的批量执行操作。 您将插入到多个表中。 例如:

      查询文字

      Insert INTO order_header(payload.id,payload.client_id,payload.comments,payload.salesman_name);
      Insert INTO order_detail(payload.id,payload.cart_items[0].citem_id,payload.cart_items[0].quantity); etc..
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-26
        • 1970-01-01
        相关资源
        最近更新 更多