How to read CSV file and insert data into PostgreSQL using Mule ESB, Mule Studio

后端 未结 3 1020
离开以前
离开以前 2020-12-05 20:31

I am very new to Mule Studio.

I am facing a problem. I have a requirement where I need to insert data from a CSV file to PostgreSQL Database using Mule Studio.

相关标签:
3条回答
  • 2020-12-05 20:44

    In order to read CSV file and insert data into PostgreSQL using Mule all you need to follow following steps: You need to have following things as pre-requisite

    • PostgreSQL
    • PostgreSQL JDBC driver
    • Anypoint Studio IDE and
    • A database to be created in PostgreSQL

    Then configure Postgre SQL JDBC Driver in Global Element Properties inside Studio Create Mule Flow in Anypoint Studio as follows:

    • Step 1: Wrap CSV file source in File component
    • Step 2: Convert between object arrays and strings
    • Step 3: Split each row
    • Step 4: Transform CSV row in array
    • Step 5: Dump into the destination Database
    0 讨论(0)
  • 2020-12-05 21:02

    I would like to suggest Dataweave.

    Steps

    1. read the file using FTP connector / endpoint.

    2. Transform using Data weave.

    3. Use database connector , store the data in DB.

    0 讨论(0)
  • 2020-12-05 21:03

    Here is an example that inserts a two columns CSV file:

    <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>
    
    0 讨论(0)
提交回复
热议问题