如何使用Mule 3.4 ESB中的Datamapper在数据库中映射Excel文件

各位早上好,

我在Mule ESB中的Datamapper组件有一个大问题。 我正在试图将一个Excel文件(xlsx)映射到一个oracle数据库的表中。 为此,我使用Oracle DataSource及其所有东西创build了JDBC连接器,但是当我到DataMapper向导创build映射时,我无法select创build的连接器,因为连接器列表中没有项目(在Output datamapper向导标签中)[下面是我的问题的屏幕截图]

DataMapper向导的屏幕截图

我真的不明白为什么,你能帮我吗?

此外,我还有一个问题:除了xls文件提供的其他字段外,我还需要在数据库中插入其他字段,例如MuleMessageID,xls文件名和Oracle SYSDATE。 它可能吗?

为了给你提供尽可能多的信息,我会发布我的mule子项目

<?xml version="1.0" encoding="UTF-8"?> <mule xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns:smtp="http://www.mulesoft.org/schema/mule/smtp" xmlns:ftp="http://www.mulesoft.org/schema/mule/ee/ftp" xmlns:jdbc-ee="http://www.mulesoft.org/schema/mule/ee/jdbc" xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:quartz="http://www.mulesoft.org/schema/mule/quartz" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:https="http://www.mulesoft.org/schema/mule/https" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/jdbc http://www.mulesoft.org/schema/mule/ee/jdbc/current/mule-jdbc-ee.xsd http://www.mulesoft.org/schema/mule/https http://www.mulesoft.org/schema/mule/https/current/mule-https.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd http://www.mulesoft.org/schema/mule/quartz http://www.mulesoft.org/schema/mule/quartz/current/mule-quartz.xsd http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd http://www.mulesoft.org/schema/mule/ee/ftp http://www.mulesoft.org/schema/mule/ee/ftp/current/mule-ftp-ee.xsd http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd http://www.mulesoft.org/schema/mule/smtp http://www.mulesoft.org/schema/mule/smtp/current/mule-smtp.xsd"> <spring:beans> <spring:bean id="SettingProperty" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" scope="singleton"> <spring:property name="locations"> <spring:list> <spring:value>classpath:pilot.properties</spring:value> </spring:list> </spring:property> </spring:bean> </spring:beans> <http:connector name="HTTPConnector" cookieSpec="netscape" doc:name="HTTP\HTTPS"> <service-overrides messageFactory="it.aizoon.http.customHttpMultipart.MyHttpMultipartMuleMessageFactory"/> </http:connector> <file:endpoint path="${file.output}" name="XSLXFile" responseTimeout="10000" doc:name="File"/> <jdbc-ee:oracle-data-source name="Oracle_Data_Source" user="${db.user}" password="${db.password}" url="${db.url}" doc:name="Oracle Data Source" transactionIsolation="UNSPECIFIED"/> <jdbc-ee:connector name="JdbcConnector" dataSource-ref="Oracle_Data_Source" validateConnections="true" queryTimeout="-1" doc:name="Database" pollingFrequency="0"> <jdbc-ee:query key="storedProc" value="CALL ${db.storedProc}" /> </jdbc-ee:connector> <data-mapper:config name="xls_to_db_grf" transformationGraphPath="xls_to_db.grf" doc:name="xls_to_db_grf"/> <!-- Starting Flow Declaration --> <flow name="zonal_imbalance_1.0Flow1" doc:name="zonal_imbalance_1.0Flow1"> <http:inbound-endpoint address="http://${conn.host}:${conn.port}/${conn.path}" connector-ref="HTTPConnector" doc:name="HTTP" exchange-pattern="request-response"/> <wildcard-filter pattern="*/${conn.path}*" caseSensitive="true" doc:name="Wildcard"/> <file:outbound-endpoint responseTimeout="10000" doc:name="Store XSLX File" path="C:\Users\paride.letizia\MuleStudio\workspace_ee\zonal_imbalance_1.0\src\test\resources\outputFolder"/> <data-mapper:transform doc:name="DataMapper"/> <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryTimeout="-1" doc:name="ORACLE Database" queryKey="example" connector-ref="JdbcConnector"> <jdbc-ee:query key="example" value="SELECT * FROM prova;"/> </jdbc-ee:outbound-endpoint> </flow> </mule> 

非常感谢你们,提前。 我期待着您的回音。

我不知道为什么他们决定添加JDBC“连接器”,但他们并不真正performance为连接器。 连接器是用特殊的APIbuild立与非标准服务的连接,所以为了build立与Oracle DB的连接,只需遵循标准的方法。

有关更多详细信息,请参阅Anypoint文档,特别是名为“端点和连接器”的段落:

连接器通过在传输中发送和接收数据来像端点一样工作。 但是,尽pipeterminal对于广泛使用的协议(如JDBC,FTP,HTTP,POP3等)是通用的,但每个连接器都是为了优化与特定第三方API(如Salesforce或Twitter)的连接而构build的。

在大多数情况下,端点可以满足您的需求,在这种情况下,您将连接到具有标准格式或协议的外部资源。 例如,如果连接到Oracle数据库或MS SQL数据库,则可以使用数据库端点,因为这些数据库以标准格式输出其数据; 不需要Oracle或MS SQL连接器。 同样,你不需要一个特定types的文件,如.csv文件的连接器。 File端点可以configuration为input和输出任何types的文本文件格式,包括.csv,所以不需要csv连接器。

相关: mule子连接器和运输之间的区别

Interesting Posts