Sql 如何从MULE中的CSV文件中读取值,并使用该值从数据库中检索数据
我有一个流,读取CSV文件和perfrorm CRUD操作在数据库中。。。我的流程有点像:-Sql 如何从MULE中的CSV文件中读取值,并使用该值从数据库中检索数据,sql,csv,mule,mule-studio,mule-el,Sql,Csv,Mule,Mule Studio,Mule El,我有一个流,读取CSV文件和perfrorm 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 p
<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>
或者一个UPDATESQL语句,我可以发现它正在工作,并且数据被插入或更新到dataase中
我的问题是:如何从.CSV文件中读取ID值并在SELECT查询中使用以从数据库检索值?您的exchange模式为单向,这意味着jdbc出站调用将不会返回到主流。使用exchangepattern=request-response获取返回值
也没有任何意义。您需要某种类型的转换器来使返回值可读。您可以添加记录器以查看返回的有效负载
更新:
csv to maps transformer的返回值是ArrayList,而不是Map,因此您不能使用Map payload:ID。请尝试拆分ArrayList,如果只有一个条目,请使用[payload[0].ID]。多亏了Anton。。
最终的解决方案是[payload[0].ID]我需要的并为我工作的内容对不起。。。实际上我已经使用了请求-响应。。这里我错写了一种方式。。。现在我编辑了。。。现在,问题是Select语句不返回数据。。其中作为插入和更新工作正常。。。我已经使用设置有效负载来获取我可以在控制台中查看的有效负载。。我也可以在这里使用logger。。在Insert的情况下,我使用了
<jdbc-ee:query key="InsertQuery" value="INSERT INTO DBDATA (ID,NAME,AGE) VALUES(#[map-payload:ID],#[map-payload:NAME],#[map-payload:AGE])"/>