将文件插入mysql db MuleESB企业

时间:2014-07-20 16:56:49

标签: mysql mule enterprise mule-studio

我需要将.csv文件插入MYSQL数据库。网上的所有例子,给我"弃用的数据库"然后没有解决方案!

HTML入站端点是使用postman插件(chrome)发送csv文件。在运行应用程序时,控制台显示此警告:

org.mule.routing.ExpressionSplitter: Splitter returned no results. If this is not expected, please check your split expression

即使我在字节数组之后添加一个拆分器到字符串,并且表达式为#[xpath('//item')],它仍会显示相同的警告!

我有MuleESB企业。与数据库的所有连接都是正确的。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:jdbc-ee="http://www...
    <db:mysql-config name="MySQL_Configuration" host="localhost"
        port="3306"   database="dbflow"
        doc:name="MySQL Configuration" user="root"/>
    <data-mapper:config name="CSV_To_XML" transformationGraphPath="csv_to_xml.grf" doc:name="CSV_To_XML"/>
    <jdbc-ee:mysql-data-source name="MySQL_Data_Source" user="User" password="Pass" url="jdbc:mysql://localhost:3306/dbflow" transactionIsolation="UNSPECIFIED" doc:name="MySQL Data Source"/>
    <jdbc-ee:connector name="Database" dataSource-ref="MySQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"/>
    <flow name="dbFlow1" doc:name="dbFlow1">
 <http:inbound-endpoint exchange-pattern="one-way" host="localhost" port="8084" path="csv" doc:name="HTTP"/>
        <data-mapper:transform config-ref="CSV_To_XML" doc:name="CSV To XML"/>
        <byte-array-to-string-transformer doc:name="Byte Array to String"/>

        <foreach collection="#[xpath('//info')]" doc:name="For Each">
            <mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
            <db:insert config-ref="MySQL_Configuration" doc:name="Database">
                <db:parameterized-query><![CDATA[INSERT INTO `dbflow`.`user_table`
(`current_date`,
`serialnumber`,
`gender`,
`fullname`,
`birthdate`,
`email`,
`mobilnumber`,
`address`)
VALUES
(#[xpath://date],
#[xpath://serialnumber],
#[xpath://gender],
#[xpath://fullname],
#[xpath://birthdate],
#[xpath://email],
#[xpath://mobilenumber],
#[xpath://address]
);]]></db:parameterized-query>

            </db:insert>

        </foreach>

    </flow>
</mule>

1 个答案:

答案 0 :(得分:1)

从讨论中看,核心问题似乎是HTTP POSTed内容最终产生了这个XML:

<?xml version="1.0" encoding="UTF-8"?>
<infos/>

解释了为什么for-each不产生任何东西。

解决方案包括HTTP POST一个有效的非空CSV实体。