0

CSV ファイルを取り込んで非整列化し、特定のフィールドをデータベースにロードする単純なファイル ポーリングを実行したいと考えています。これはかなり一般的なシナリオだと思いますが、Java プロセッサを作成する代わりに Spring XML を使用する必要があります。驚いたことに、インターネット全体を見渡しても、その例を見つけるのは困難でした。おそらく、私は適切な場所を調べていないだけですが、価値があるので、他の誰かが役に立つと思った場合に備えて、質問と自分の回答を共有しています。

これが私が達成しようとしていることです:

  1. フォルダーから CSV ファイルを自動的に選択します。
  2. 特定のフィールドを CSV からテーブルにロードする

CSVはこんな感じ

ID,KEY,FULLNAME,DOCID
1,1,PERSON1,THY
2,1,PERSON2,XCV
3,1,PERSON3,OIU
4,1,PERSON4,KJM

テーブルに保存する必要があるもの (ID フィールドと FULLNAME フィールドのみ):

ID 名前
1 人1
2 人2
3 人3
4 PERSON4

Camel 3.14.0 を使用しています。

4

1 に答える 1

0

私のために働いたSpring XML DSLルート:

  <route>
     <from uri="file://D:\path?include=(?i).*.csv&amp;moveFailed=ErrorFiles&amp;delay=5000"/>
     <unmarshal>
        <csv captureHeaderRecord="true" useMaps="true"/>  
     </unmarshal>
     <!-- Clear contents from destination table.  -->
     <to uri="sql:DELETE FROM PERSON?datasource=#customerDS&amp;noop=true"/> 
     <split> <!--Split unmarshalled body in individual maps that will be sent one by one to sql component -->
        <simple>${body}</simple> <!--As unmarshal is a List <Map> then this automatically gets list split in individual maps I guess -->
        <log message="Record being processed:  ${body}" loggingLevel="INFO"/>
        <to uri="sql:INSERT INTO PERSON(ID,NAME) VALUES(:#ID,:#FULLNAME)?dataSource=#customerDS" /> 
     </split>
  </route>
于 2022-01-15T14:23:56.450 に答える