Dynamic 使用动态构建到流变量中的Insert语句插入批量数据

Dynamic 使用动态构建到流变量中的Insert语句插入批量数据,dynamic,mule,bulkinsert,Dynamic,Mule,Bulkinsert,我不熟悉Mule 3.7.3中的数据库连接器。我试图使用动态生成的insert语句插入批量数据。我不知道你们通常把这种方法称为什么,我打算做的是,动态地将多个文件加载到各自的暂存表中,而不是使用多选路由,并在每个路由中硬编码INSERT语句 我的flowVars.insertStatement包含如下值:“插入[roomService]([RoomId]、[ServiceId]、[DateTime])值(#[payload.RoomId]、#[payload.ServiceId]、#[paylo

我不熟悉Mule 3.7.3中的数据库连接器。我试图使用动态生成的insert语句插入批量数据。我不知道你们通常把这种方法称为什么,我打算做的是,动态地将多个文件加载到各自的暂存表中,而不是使用多选路由,并在每个路由中硬编码INSERT语句

我的flowVars.insertStatement包含如下值:“插入[roomService]([RoomId]、[ServiceId]、[DateTime])值(#[payload.RoomId]、#[payload.ServiceId]、#[payload.DateTime])”

当我尝试使用这些时:

<db:insert config-ref="Staging_DB" doc:name="insert-data-into-staging-db" bulkMode="true">
    <db:parameterized-query><![CDATA[#[flowVars.insertStatement]]]></db:parameterized-query>

这给了我“查询类型必须是“[INSERT,STORE\u PROCEDURE\u CALL]”中的一种,但却是“DDL”(java.lang.IllegalArgumentException)


这给了我“批量查询不能包含参数化SQL查询(java.lang.IllegalArgumentException)”


这给了我“索引:0(java.lang.IndexOutOfBoundsException)”


我需要一些如何正确操作的指针。请告知。

恐怕您无法使用批量模式

您可能这样定义了
flowVars.insertStatement

<set-variable variableName="insertStatement" value="&quot;INSERT INTO [roomService] ([RoomId],[ServiceId],[DateTime]) VALUES (#[payload.roomId],#[payload.serviceId],#[payload.dateTime])&quot;" doc:name="set insertStatement"/>

你好@Yevgeniy,感谢您花时间回复。问题是我必须将属性文件中的值字符串(值(#[payload.roomId]、#[payload.serviceId]、#[payload.dateTime])获取到流变量中,然后将其连接到flowVars.insertStatement中。如果我特别提到要插入数据的有效负载字段,那么它不是动态的。如果您对此有更好的想法,请告诉我。对不起,那么我就是不明白问题所在:(
<db:insert config-ref="Staging_DB" doc:name="insert-data-into-staging-db" bulkMode="true">
    <db:dynamic-query><![CDATA[#[flowVars.insertStatement]]]></db:dynamic-query>
<set-variable variableName="insertStatement" value="&quot;INSERT INTO [roomService] ([RoomId],[ServiceId],[DateTime]) VALUES (#[payload.roomId],#[payload.serviceId],#[payload.dateTime])&quot;" doc:name="set insertStatement"/>
<set-payload doc:name="test data" value="#[[{ &quot;name&quot;: &quot;Chevon&quot; }, { &quot;name&quot;: &quot;Yevgeniy&quot; }]]"/>
<foreach doc:name="For Each">
    <set-variable variableName="sql" value="insert into TEST(name) values ('#[payload.name]')" doc:name="set sql variable"/>
    <db:insert config-ref="MySQL_Configuration" doc:name="INSERT">
        <db:dynamic-query><![CDATA[#[flowVars.sql]]]></db:dynamic-query>
    </db:insert>
</foreach>