Я столкнулся с подобной проблемой несколько недель назад.К сожалению, ни одна БД не допускает более 1000 вставок за цикл с использованием синтаксиса «Вставить в значения».
Вместо этого я использовал «Вставить в (columnames)» Выберите «columnOne», «columnTwo», .... «columnN» UNIONВСЕ Выберите 'columnOne', 'columnTwo', .... 'columnN' .....
Здесь каждый оператор выбора содержит значения столбцов, и несколько вставок строк объединяются с помощью UNION ALL.
<iterate continueParent="true" expression="$body//*[local-name()='rootElement']" sequential="true">
<target>
<sequence>
<property expression="//ColumnOne//text()" name="ColumnOne" scope="default" type="STRING" />
<property expression="//ColumnTwo/text()" name="ColumnTwo" scope="default" type="STRING" />
<property expression="//ColumnN/text()" name="ColumnN" scope="default" type="STRING" />
<property name="Quotes" scope="default" type="STRING" value="'" />
<filter regex="false" source="boolean(get-property('operation','concat-data'))">
<then>
<property expression="fn:concat('Insert into TableName(ColumnOne,ColumnTwo,....,ColumnN) values ','(',get-property('Quotes'),get-property('ColumnOne'),get-property('Quotes'),',',get-property('Quotes'),get-property('ColumnTwo'),get-property('Quotes'),',',get-property('Quotes'),get-property('ColumnN'),get-property('Quotes'),')')" name="concat-data" scope="operation" type="STRING" />
</then>
<else>
<property expression="fn:concat(get-property('operation','concat-data'),',','(',get-property('Quotes'),get-property('ColumnOne'),get-property('Quotes'),',',get-property('Quotes'),get-property('ColumnTwo'),get-property('Quotes'),',',get-property('Quotes'),get-property('ColumnN') ,get-property('Quotes'),')')" name="concat-data" scope="operation" type="STRING" />
</else>
</filter>
</sequence>
</target>
</iterate>
<property expression="get-property('operation','concat-data')" name="BulkInsertQuery" scope="default" type="STRING" />
Вы можете извлечь свойство BulkInsertQuery из запроса медиатора БД в качестве параметра.