dynamic - Insert bulk data with INSERT statement built dynamically into a flow variable -
i'm new database connector in mule 3.7.3. i'm trying insert bulk data using insert statement formed dynamically. don't know guys call approach, intend is, load multiple files respective staging table dynamically, instead of having multiple choice routes , hard code insert statement in each route.
my flowvars.insertstatement contains value this: "insert [roomservice] ([roomid],[serviceid],[datetime]) values (#[payload.roomid],#[payload.serviceid],#[payload.datetime])"
when tried these:
<db:insert config-ref="staging_db" doc:name="insert-data-into-staging-db" bulkmode="true"> <db:parameterized-query><![cdata[#[flowvars.insertstatement]]]></db:parameterized-query> this gives me "query type must 1 of '[insert, store_procedure_call]' 'ddl' (java.lang.illegalargumentexception)"
<db:insert config-ref="staging_db" doc:name="insert-data-into-staging-db" bulkmode="true"> <db:dynamic-query><![cdata[#[flowvars.insertstatement]]]></db:dynamic-query> this gives me "bulk query cannot contain parameterized sql query (java.lang.illegalargumentexception)"
<db:insert config-ref="staging_db" doc:name="insert-data-into-staging-db" bulkmode="true"> <db:dynamic-query><![cdata[#[flowvars.insertstatement]]]></db:dynamic-query> this gives me "index: 0 (java.lang.indexoutofboundsexception)"
i need pointers how correctly. please advise.
i afraid wont able use bulk mode approach.
you defined flowvars.insertstatement this:
<set-variable variablename="insertstatement" value=""insert [roomservice] ([roomid],[serviceid],[datetime]) values (#[payload.roomid],#[payload.serviceid],#[payload.datetime])"" doc:name="set insertstatement"/> this make sure payload.roomidand other flowvars wont become null after defining variable, @ same time wont replaced db:insert component either.
following configuration uses foreach component instead of bulk mode, work your:
<set-payload doc:name="test data" value="#[[{ "name": "chevon" }, { "name": "yevgeniy" }]]"/> <foreach doc:name="for each"> <set-variable variablename="sql" value="insert 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>
Comments
Post a Comment