我需要将.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>
答案 0 :(得分:1)
从讨论中看,核心问题似乎是HTTP POSTed内容最终产生了这个XML:
<?xml version="1.0" encoding="UTF-8"?>
<infos/>
解释了为什么for-each
不产生任何东西。
解决方案包括HTTP POST一个有效的非空CSV实体。