kettle demo5 遍历目录下多文件,根据文件类型走不同方式导入到数据库

有时候从FTP上下载下来的文件有多个,并且文件格式有可能不同,这时候就要用到条件判断了,比如txt文件通过文本文件输入,excel文件通过excel输入,下面就来配置下这个操作

1、首先把文件准备好,txt文件是在25这个目录下,然后excel在25目录下的excel_folder子目录下,所以这里会有子目录的遍历

表清空,文件的数据尽量不要重复,否则会报主键重复错误

a0745a516e11d087c9e361f1bfb337d2302.jpgb48ecd5b21d2bf2775644baf8c1622014ea.jpg34affdaa761be10b170b73edbff25d07df4.jpg

8acf7dc6a04ef3b8add09fe1b5923ff1116.jpg

d1af933ffc348db98666f308a8eb76f72e4.jpg

2、新建一个转换,先拖进来用到的控件,如下图

首先拖拽一个获取文件名的控件,然后后面用流程空间switch来判断,如果是文本文件,则走文本文件输入,如果是excel文件,则走excel输入,如果是目录,则走获取子目录名

这里获取子目录后不用再进行递归了,因为获取文件名这个操作里有个选项,是否包括子目录,他会把所有的文件和目录路径都遍历出来,所以当前目录下的文件和子目录下的文件走输入流程,子目录就打印下日志就好了 

80d8525ec169b3bb355c5dc0767face051c.jpg

3、获取文件名属性设置,下面的通配符没有写,导致后面报错了,在后面会提到

a2606a73f7e3b621394ada581dc22de50ae.jpg

4、设置switch控件,这里测试的时候发现了报错,是因为下图Case值数据类型选择的是None,应该选择String,

25f8476bdec742ba42580b5836d7e0a202b.jpg

5、设置文本文件输入,这里稍微有点变化了,因为这个地方接收的文件信息是仓switch来的,然后内容分隔符还是|,字段这一块就不能自动获取了,要手动设置下

808584284ab0998a9a55e7758d2fe3fad54.jpg

fbd223319c4e4c2bebd70435b2eb0d62a4d.jpg

6、表输出就不再设置了,跟前面基本一样,

7、excel输入属性设置,也是从上一步骤接收,然后工作表选项卡里sheet手动设置下,最后再手动设置下字段,后面的表输入就同上

3437b0dc000a16ba9688bc4abf78be9a3d2.jpg

750b08e3da52ba06479f5147f685ac2cd00.jpg

8d089b9bf5d3e0c487cd208387bb598141e.jpg

8、获取子目录名控件,就勾选下目录名在字段中,然后选择目录字段为uri,

c308aa06c9b5818cac0ff875d4d2be5be1c.jpg

9、写日志,

c6b6b4e6d8123798bda6e011c0da635a04c.jpg

10、到这里就结束了,然后执行下当前转换,发现报错了,说路径问题,

5cc8d2749181c0f741686b630f5fdc85c10.jpg

 

检查了下获取文件名属性哪里,发现只设置了目录,没有设置要遍历目录下那些格式的文件,没写正则表达式,咱们是要遍历txt、excel等文件,

而目录中现在只有三个格式:txt、子目录、excel三种,这三种咱们再switch里面已经全部判断了,所以咱们就还是写 .*\.*$ 就好了,就是遍历所有文件,包括目录

4cf5e6b913eac1df64ea16f4d25f64cae31.jpg

然后保存,再次执行下,执行成功了

592cb1e4b443e982c5f26d481f6abbd55c4.jpg

d44bef05302f0cc4a7a8f42798c8b60baa9.jpg

但是发现日志没打印,这个暂时想不起来了,待会在调试下,

 

 

 

 

 

 

转载于:https://my.oschina.net/feiyang2017/blog/3027873

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值