如何使用wso2 dss 6.4.0将Excel工作表的所有记录插入sql数据库中?

时间:2019-06-06 11:05:44

标签: wso2 wso2esb wso2dss

我是wso2 6.4.0的新手。我必须将excel数据插入sql,所以我选择wso2 dss。使用dss记录可以正确提取并插入,但是仅插入一条记录(仅顶部记录)会使记录被跳过。我还使用了嵌套查询选项来检索和插入。

<query id="readExcelData" useConfig="excelConfig">  
<excel>
<workbookname>sheet1</workbookname>
<hasheader>true</hasheader>
<startingrow>2</startingrow>
<maxrowcount>-1</maxrowcount>
<headerrow>1</headerrow>
</excel>
<result element="Products" rowName="Product">           
<element column="ID" name="ID" xsdType="xs:string"/>
<element column="Model" name="Model" xsdType="xs:string"/>
<element column="Classification" name="Classification" xsdType="xs:string"/>
<call-query href="insertIntoSql" requiredRoles="">      
<with-param name="ID" query-param="ID" />
<with-param name="Model" query-param="Model" />
<with-param name="Classification" query-param="Classification" />
</call-query>
</result>    
</query>
<operation name="excelFileProcessing" returnRequestStatus="true">
<call-query href="readExcelData"/>          
</operation>
<query id="insertIntoSql" useConfig="sqlConfig">                                    
<sql>insert into dbo.myProductList(ID,Model,Classification) values(:ID,:Model,:Classification)</sql>                                    
<param name="ID" sqlType="STRING" />                                    
<param name="Model" sqlType="STRING" />                                    
<param name="Classification" sqlType="STRING" />                  
</query>

1 个答案:

答案 0 :(得分:0)

从Excel工作表检索记录后,您将获得记录集。因此,您必须编写一个突触配置来插入每个记录。为此,您要遍历excel工作表数据的有效负载(对于每个记录)并进行插入。您可以使用iterate mediator。例如,您可以实现类似于this的东西。

您可以关注

  1. 在代理服务/ API中,调用dataservice以获取excel工作表的 数据。
  2. 遍历结果集。
  3. 在每次迭代中,创建 有效负载以将数据插入DB并调用dataservice来调用 插入数据查询。
  4. 调用代理服务/ API。