【问题标题】:Insert file to mysql db MuleESB enterprise将文件插入 mysql db MuleESB 企业
【发布时间】:2016-04-07 04:34:28
【问题描述】:

我需要将 .csv 文件插入 MYSQL 数据库。网上所有的例子,给我“Deprecated Database”然后没有解决办法!

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

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

即使我在 Byte Array 到 String 之后添加拆分器,并且表达式为 #[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>

【问题讨论】:

  • 由于您使用的是企业版,因此​​您可以获得 MuleSoft 的专业支持,并为您的问题获得及时的帮助。无论如何,你能发布你为这个神秘的“重复数据库”错误获得的完整堆栈跟踪吗?
  • 对于重复的数据库,在我复制并粘贴任何示例中提供的任何 xml 后,流程会在 db pic (!) 上显示带有警告标志的“重复数据库”。因为我得到了这个,我没有尝试继续运行我在网络上阅读的应用程序,这是因为它在以前的版本中受支持,所以在当前版本中更新了一些表达式,我们应该根据更新 xml到那个。应该说,我没有购买Mule EE。我只下载,所以我认为它是试用版!所以我不认为我能从他们那里得到支持:)
  • @user37:我不认为弃用的数据库是一个问题.. 即使我在较旧的 Mule 上创建的应用程序(如 Mule 3.4)现在正在运行在 Mule 3.5 上的应用程序也是如此。但无论如何,我曾经从那些已弃用的数据库中获取结果......
  • Spring bean 用于配置 Mule 本身未配置的对象,例如本例中的数据源。对于 FTP,请参阅用户指南:mulesoft.org/documentation/display/current/…
  • 你放置断点的地方,有效载荷是一个字节数组,我们不可读。在转换为字符串后添加一个记录器,并将有效负载复制/粘贴到问题中。

标签: mysql mule enterprise mule-studio


【解决方案1】:

从讨论来看,核心问题似乎是 HTTP POST 内容最终会生成此 XML:

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

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

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

【讨论】:

  • 如何防止Mule将FTP中的文件移动到本地文件夹后删除? (Mule EE) 我已经搜索过,但 moveToDirectory 仅适用于 FILE 连接器,但我有 FTP 连接器。谢谢!
  • moveToDirectory 也可用于 FTP EE,您可以在此处看到:mulesoft.org/documentation/display/current/…
  • 谢谢多索先生。但是,当我使用moveToDirectoty 时,Mule 将停止处理其余部分。 Mule 正在移动文件,但没有将其插入数据库。请问这两条路怎么走?
  • 请为此问题打开一个新问题。
  • 多索先生,请查看this question。谢谢!
猜你喜欢
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多