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

如何使用Mule ESB、Mule Studio读取CSV文件并将数据插入PostgreSQL,mule,mule-studio,Mule,Mule Studio,我对Mule工作室很陌生 我面临一个问题。我需要使用Mule Studio将CSV文件中的数据插入PostgreSQL数据库 我正在使用Mule Studio CE(版本:1.3.1)。我在谷歌上查了一下ed,发现我们可以使用数据映射器来实现这一点。但它只对EE有效,所以我不能使用它 我在网上查到一篇文章 这似乎是可行的,但我的要求正好与文章相反。我需要文件作为入站数据,而数据库作为出站组件 这样做的方法是什么 任何一步一步的帮助(如使用什么组件)和指导都将不胜感激 以下是插入两列CSV文件的示

我对Mule工作室很陌生

我面临一个问题。我需要使用Mule Studio将CSV文件中的数据插入PostgreSQL数据库

我正在使用Mule Studio CE(版本:1.3.1)。我在谷歌上查了一下ed,发现我们可以使用数据映射器来实现这一点。但它只对EE有效,所以我不能使用它

我在网上查到一篇文章

这似乎是可行的,但我的要求正好与文章相反。我需要文件作为入站数据,而数据库作为出站组件

这样做的方法是什么


任何一步一步的帮助(如使用什么组件)和指导都将不胜感激

以下是插入两列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>

我想推荐Dataweave

台阶

  • 使用FTP连接器/端点读取文件

  • 使用数据编织进行变换

  • 使用数据库连接器,将数据存储在数据库中

  • 要使用Mule读取CSV文件并将数据插入PostgreSQL,您需要执行以下步骤: 你需要具备以下条件

    • PostgreSQL
    • PostgreSQL JDBC驱动程序
    • 任意点工作室IDE和
    • 要在PostgreSQL中创建的数据库
    然后在Studio的全局元素属性中配置PostgreSQLJDBC驱动程序 在Anypoint Studio中创建Mule流,如下所示:

    • 步骤1:将CSV文件源包装到文件组件中
    • 步骤2:在对象数组和字符串之间转换
    • 步骤3:拆分每行
    • 步骤4:转换数组中的CSV行
    • 步骤5:转储到目标数据库

    嗨,这很有效。我只想再问两个问题。a) 如何验证正在解析有效的.csv文件(只有扩展名检查是可以的),然后继续执行下一步。(b) 如何筛选标题行?查看了我的回答,添加了一个
    文件名通配符筛选器
    以仅拾取
    *.csv
    文件,删除拆分数组(标题)的第一行,并使用
    文件到字符串转换器
    (比
    对象到字符串转换器更正确)。是否有人可以就如何验证CSV给出说明。我的意思是检查是否有任何数据不为空等等。OP明确地想要一个仅限CE的解决方案。