使用Apache Camel Spring XML将CSV加载到数据库(CSV到SQL组件)

b09cbbtk  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(130)

我想做一个简单的文件轮询,接收一个CSV文件,解组它并将特定字段加载到数据库中。我想这应该是一个很常见的场景,但我需要使用Spring XML而不是创建一个java处理器。令我惊讶的是,我发现很难找到任何关于这方面的例子,在互联网上寻找。可能我只是没有在正确的地方寻找,但值得的是,我在分享我的问题和我自己的答案,以防其他人觉得有用。
这就是我想要达到的目标:
1.自动从文件夹中选取CSV文件。
1.将CSV中的特定字段加载到表中
CSV如下所示

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

需要保存到表中的字段(仅ID和FULLNAME字段):

人员

| 识别码|名称|
| - -|- -|
| 一个|人员1|
| 2个|人员2|
| 三个|人员3|
| 四个|人员4|
我用的是Camel 3.14.0。

2hh7jdfx

2hh7jdfx1#

适用于我的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>

相关问题