Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从MULE中的CSV文件中读取值,并使用该值从数据库中检索数据_Sql_Csv_Mule_Mule Studio_Mule El - Fatal编程技术网

Sql 如何从MULE中的CSV文件中读取值,并使用该值从数据库中检索数据

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

我有一个流,读取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 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的情况下,我使用了,我可以在控制台中看到它,稍后可以将它保存到其他地方,如文件中作为响应更新答案,但我仍然对您在这里实际尝试的操作有点困惑。谢谢。。。[payload[0].ID]工作正常。。。是Select语句返回数组。。。。但这只是返回第一排。。。有没有办法让我弄到所有的行??无论如何,感谢您的帮助。您可能需要拆分ArrayList,然后使用查询遍历每个项,并聚合结果。可能是拆分器和聚合器组件。您需要学习使用Mule路由器来完成此操作:感谢Anton的帮助
<jdbc-ee:query key="InsertQuery" value="INSERT INTO DBDATA (ID,NAME,AGE) VALUES(#[map-payload:ID],#[map-payload:NAME],#[map-payload:AGE])"/>