【问题标题】:How to read value from CSV file in MULE and retrieve data from Database using the value如何从 MULE 中的 CSV 文件中读取值并使用该值从数据库中检索数据
【发布时间】:2015-07-21 23:41:14
【问题描述】:

我有一个读取 CSV 文件并在数据库中执行 CRUD 操作的流程......我的流程有点像:-

<flow name="CsvToFile" doc:name="CsvToFile">
    <file:inbound-endpoint path="C:\Data" responseTimeout="10000" doc:name="CSV" connector-ref="File">
        <file:filename-wildcard-filter pattern="*.csv" caseSensitive="true"/>
    </file:inbound-endpoint>
    <jdbc-ee:csv-to-maps-transformer delimiter="," mappingFile="src/main/abc.xml" ignoreFirstRecord="true" doc:name="CSVTransformer"/>
    <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="SelectQuery" queryTimeout="-1" connector-ref="jdbcConnectorGlobal" doc:name="Database">
        <jdbc-ee:query key="SelectQuery" value="Select * FROM DBDATA where ID=#[map-payload:ID]"/>
    </jdbc-ee:outbound-endpoint>
    <set-payload value="#[message.payload]" doc:name="Set Payload"/>
</flow>

现在如果我使用SELECT SQL 语句.. 我看不到结果,也没有获取任何数据...但是如果我使用INSERT 喜欢

<jdbc-ee:query key="InsertQuery" value="INSERT INTO DBDATA (ID,NAME,AGE) VALUES(#[map-payload:ID],#[map-payload:NAME],#[map-payload:AGE])"/>

UPDATE SQL 语句,我可以发现它正在工作,并且数据已插入或更新到 dataase 中。

我的问题是:如何从.CSV 文件中读取ID 值并在SELECT 查询中使用以从数据库中检索值?

【问题讨论】:

    标签: sql csv mule mule-studio mule-el


    【解决方案1】:

    你有exchange-pattern="one-way",表示jdbc出站调用不会返回到主流程。请改用exchange-pattern="request-response" 来获取返回值。

    另外&lt;set-payload value="#[message.payload]" doc:name="Set Payload"/&gt; 没有任何意义。您需要某种转换器来使返回值可读。您可以添加一个记录器来查看返回的有效负载。

    更新:

    csv-to-maps-transformer 的返回值是 ArrayList,不是 Map,所以不能使用 map-payload:ID。尝试拆分 ArrayList,如果只有一个条目,请使用 #[payload[0].ID]

    【讨论】:

    • 对不起...实际上我使用了请求-响应..这里错误地写了一种方式...现在我已经编辑了...现在,问题是 Select 语句不返回数据..插入和更新工作正常...我已经使用 set-payload 来获取可以在控制台中查看的有效负载..我也可以在这里使用记录器..在插入的情况下,我使用了 我可以在控制台中看到,以后可以将其保存在其他地方,例如作为响应保存在文件中
    • 更新了答案,但我仍然对您在这里实际尝试做的事情感到有些困惑。
    • 谢谢 ... #[payload[0].ID] 工作正常 ... 是 Select 语句返回数组 .... 但这仅返回第一行 ... 有什么办法我可以得到所有的行??无论如何感谢您的帮助..
    • 您可能必须拆分 ArrayList,然后使用查询遍历每个项目,然后汇总结果。拆分器和聚合器组件,也许。您需要学习使用 Mule 路由器来执行此操作:mulesoft.org/documentation/display/current/Routers
    • 感谢安东的帮助
    【解决方案2】:

    感谢安东.. 最终解决方案是#[payload[0].ID] 我需要并为我工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多