Как читать CSV файл и вставлять данные в PostgreSQL с помощью Mule ESB, Mule Studio

Я очень новичок в Mule Studio.

У меня проблема. У меня есть требование, когда мне нужно вставить данные из CSV файла в базу данных PostgreSQL с помощью Mule Studio.

Я использую Mule Studio CE (версия: 1.3.1). Я проверял в Google и обнаружил, что мы можем использовать Data-mapper для этого. Но он работает только для EE. Поэтому я не могу его использовать.

Также я проверяю сеть и нашел статью Использование Mule Studio для чтения данных из PostgreSQL (Inbound) и записи в файл (исходящий) - шаг за шагом..

Это кажется выполнимым, но мое требование просто противоположно данной статье. Мне нужен файл как входящие данные, а Databse - как компонент Outbound.

Каков способ сделать это?

Любая пошаговая помощь (например, какие компоненты использовать) и руководство будут высоко оценены.

Ответ 1

Вот пример, который вставляет файл 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>

Ответ 2

Чтобы прочитать файл CSV и вставить данные в PostgreSQL с помощью Mule, вам нужно выполнить следующие шаги: Вы должны иметь следующие вещи в качестве предпосылки

  • PostgreSQL
  • Драйвер PostgreSQL JDBC
  • Anypoint Studio IDE и
  • База данных, которая будет создана в PostgreSQL

Затем настройте драйвер Postgre SQL JDBC в свойствах глобального элемента внутри Studio Создайте поток Mule в Anypoint Studio следующим образом:

  • Шаг 1: Вставьте файл CSV файла в компонент "Файл"
  • Шаг 2: Преобразование между массивами объектов и строками
  • Шаг 3: Разделить каждую строку
  • Шаг 4: Преобразование строки CSV в массиве
  • Шаг 5: Дамп в базу данных назначения

Ответ 3

Я хотел бы предложить Dataweave.

Шаги

  • прочитайте файл с помощью FTP-коннектора/конечной точки.

  • Преобразование с использованием переплетения данных.

  • Используйте соединитель базы данных, сохраните данные в БД.