12

私は Mule Studio を初めて使用します。

私は問題に直面しています。Mule Studio を使用して CSV ファイルから PostgreSQL データベースにデータを挿入する必要があるという要件があります。

Mule Studio CE (バージョン: 1.3.1) を使用しています。ed を Google で調べたところ、そのために Data-mapper を使用できることがわかりました。しかし、それはEEでしか機能しないため、使用できません。

また、私はネットでチェックしていて、Using Mule Studio to read Data from PostgreSQL(Inbound) and write it to File (Outbound) - Step by Step approachという記事を見つけました。

それは実現可能に思えますが、私の要件は、与えられた記事の正反対です。ファイルをインバウンド データとして、Databse をアウトバウンド コンポーネントとして必要です。

その方法は何ですか?

ステップバイステップのヘルプ (使用するコンポーネントなど) とガイダンスは大歓迎です。

4

3 に答える 3

11

以下は、2 列の 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>
于 2012-12-18T00:08:00.057 に答える