0

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>

SQLステートメントを使用するSELECTと..結果が表示されず、データがフェッチされません...しかし、INSERTlikeを使用すると

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

またはUPDATESQL ステートメント、私はそれが機能していることを確認でき、データはデータベースに挿入または更新されます。

私の質問は、ファイルIDから値を読み取り、クエリで使用してデータベースから値を取得するにはどうすればよいですか?.CSVSELECT

4

2 に答える 2

1

exchange-pattern="one-way"これは、jdbc アウトバウンド コールがメイン フローに戻らないことを意味します。代わりに使用exchange-pattern="request-response"して、戻り値を取得します。

また<set-payload value="#[message.payload]" doc:name="Set Payload"/>、意味がありません。戻り値を読みやすくするには、何らかの変換が必要です。ロガーを追加して、返されたペイロードを確認できます。

アップデート:

csv-to-maps-transformer の戻り値は Map ではなく ArrayList なので、map-payload:ID は使えません。ArrayList を分割してみるか、#[payload[0].ID]エントリが 1 つしかない場合は使用してください。

于 2014-03-26T08:33:04.583 に答える