如何使用Mule ESB,Mule Studio读取CSV文件并将数据插入PostgreSQL

pri*_*kar 12 mule mule-studio

我是Mule Studio的新手.

我正面临一个问题.我有一个要求,我需要使用Mule Studio将数据从CSV文件插入PostgreSQL数据库.

我使用的是Mule Studio CE(版本:1.3.1).我查看了谷歌,发现我们可以使用Data-mapper这样做.但它只适用于EE.所以我不能使用它.

此外,我正在检查网络并找到一篇文章使用Mule Studio从PostgreSQL(入站)读取数据并将其写入文件(出站) - 逐步方法.

这似乎是可行的,但我的要求恰好与给出的文章相反.我需要File作为入站数据,而Databse作为Outbound组件.

这样做的方法是什么?

任何一步一步的帮助(如使用的组件)和指导将非常感激.

Dav*_*sot 11

以下是插入两列CSV文件的示例:

<configuration>
    <expression-language autoResolveVariables="true">
        <import class="org.mule.util.StringUtils" />
        <import class="org.mule.util.ArrayUtils" />
    </expression-language>
</configuration>

<spring:beans>
    <spring:bean id="jdbcDataSource" class=" ... your data source ... " />
</spring:beans>

<jdbc:connector name="jdbcConnector" dataSource-ref="jdbcDataSource">
    <jdbc:query key="insertRow"
        value="insert into my_table(col1, col2) values(#[message.payload[0]],#[message.payload[1]])" />
</jdbc:connector>

<flow name="csvFileToDatabase">
    <file:inbound-endpoint path="/tmp/mule/inbox"
        pollingFrequency="5000" moveToDirectory="/tmp/mule/processed">
         <file:filename-wildcard-filter pattern="*.csv" />
    </file:inbound-endpoint>

    <!-- Load all file in RAM - won't work for big files! -->
    <file:file-to-string-transformer />
    <!-- Split each row, dropping the first one (header) -->
    <splitter
        expression="#[rows=StringUtils.split(message.payload, '\n\r');ArrayUtils.subarray(rows,1,rows.size())]" />
    <!-- Transform CSV row in array -->
    <expression-transformer expression="#[StringUtils.split(message.payload, ',')]" />
    <jdbc:outbound-endpoint queryKey="insertRow" />
</flow>
Run Code Online (Sandbox Code Playgroud)