Mule:引用子数组中的值以插入数据库

Mule:引用子数组中的值以插入数据库,mule,Mule,我输入的有效载荷是这样的,这是一个ArrayList payload :[[a3An00000009Ej6EAE, a3An00000009EjGEAU, a3An00000009EjBEAU], [45000.0, 50000.0, 12000.0]] 传入数据中有多个数组 我可以将id值引用为[message.payload.id]&将其放入insert语句中: <db:parameterized-query><![CDATA[INSERT INTO HDR_TAB

我输入的有效载荷是这样的,这是一个ArrayList

  payload :[[a3An00000009Ej6EAE, a3An00000009EjGEAU, a3An00000009EjBEAU], [45000.0, 50000.0, 12000.0]]
传入数据中有多个数组

我可以将id值引用为[message.payload.id]&将其放入insert语句中:

 <db:parameterized-query><![CDATA[INSERT INTO HDR_TABLE (ID) VALUES (#[message.payload.id])]]</db:parameterized-query>
如何在代码中引用两个单独的数组

  <db:bulk-execute config-ref="Oracle_Configuration" doc:name="Database"><![CDATA[
在xxtw.xxtw_OE_合同_行合同_行合同_ID,ATTRIBUTE1VALUESxxtw.xxtw_OE_合同_行合同_SEQ.NEXTVAL中插入“[payload[0][0]”,“[payload[0][1]”

                                                                                                           ]]></db:bulk-execute>                                                                                                  
     <!--  <foreach doc:name="For Each" collection="#[flowVars.extendedPrice]">

您可以将payload.lineID与分隔符拆分为“”,从而生成一个数组


从该数组中,您实际上可以通过使用索引来获取值。

为了将记录列表插入数据库中的表中,我们可以利用database connector属性的基本设置中的Bulk Mode选项。通过启用此选项,我们不需要在列表/数组中循环

因为批量模式操作需要Iterable/Iterator作为输入。我们必须确保有效载荷是一个列表。在这种情况下,如果预期结果是id和lineID的所有值都插入到同一个表中,则为HDR_表。然后,我们必须将它们合并为一个列表并覆盖有效负载

<expression-component doc:name="Expression"><![CDATA[
    payload.lineID.add(payload.id);
    payload = payload.lineID;]]>
</expression-component>
如果只需要将lineID插入HDR_表,则直接设置有效负载

<set-payload value="#[payload.lineID]" doc:name="Set Payload"/>
最后修改查询:

<db:parameterized-query><![CDATA[INSERT INTO HDR_TABLE (ID) VALUES (#[payload])]]</db:parameterized-query>
嗯,编辑后的问题和原来的略有不同。但是,为了在不循环的情况下插入数组,我们仍然使用批量模式选项Operation=insert,Query Type=Parameterized。然后再加上一个步骤,将有效负载合并到一个连续n元组的列表中

有效负载是一个阵列阵列:[a3An00000009Ej6EAE、a3An00000009EjGEAU、a3An00000009EjBEAU]、[45000.0、50000.0、12000.0]]。它将被数据库连接器误解,即使批量模式被激活。数据库会认为只有两条记录。因为主数组由两个记录/数组组成。 而预期有效负载是一个包含3条记录的列表。因此,我们需要将它们合并为类似于键值对记录的内容。所以它将是这样的:[a3An00000009Ej6EAE,45000.0],[a3An00000009EjGEAU,50000.0],[a3An00000009EjBEAU,12000.0]] 为了产生预期的有效载荷,然后放置一个额外的变压器,设置有效载荷。使用以下表达式设置其值:[dw'payload[0]zip payload[1]'] 最后,将SQL查询细化为:INSERT INTO tableName col1,col2值[payload[0]],[payload[1]]
你好,Sulthony,我的代码的进一步修改。我的有效负载是一个数组,我需要从每个数组中提取一个&insert,换句话说,我要插入有效负载[0],[0]。我已经更新了上面的代码。期待您的inputHI Sulthony,感谢您的大力响应!