最近有个需求,需要动态去获取文件,并将文件中的数据吃进数据,所以需要用到【获取文件名】这个组件。但使用该组件时一直未能正确获取到我想要那个文件,后来才发现系【获取文件名】组件中的“通配符”栏位的正则表达式写法不对所致,后经调整,测试通过。
本地文件下的文件列表:
由于项目需要,我们只想获取到 D:\tmp\c_20231128.csv 这个文件,并将其导进数据库。
【新建一个转换】- 然后在【核心对象】中依次将【获取文件名】- 【csv 文件输入】- 【表输出】托近工作区,然后依次将它们连接起来,如下图。
【获取文件名】组件
双击【获取文件名】,然后按照下列分别“文件或目录” 和“正则表达式”,然后点击【增加(A)】按钮;
接着点击【显示文件名称(S)…】按钮,就可以预览自己所获取的文件列表是否是自己想要的啦。
正则所获取到的文件列表,正好是自己想要的文件。
点击【关闭】后,然后点击【获取文件名】组件中的【预览记录(P)】按钮,可以查看到获取到的文件的数据,记住第一个字段名是“filename”,以备下一步使用。接着依次点击【关闭(C)】,【确定(O)】按钮。
【CSV文件输入】组件
双击【csv文件输入】组件,然后在“文件名字段(数据来源于前一步骤)”栏位的下拉框中选取“filename”;“包含列头行” 是否勾选,看自己需要,我这个文件是包含第一列的标题的,便于下一步的【表输出】组件设置;“文件编码” 看自己情况选择;然后点击【获取字段】,并修改“类型" 和“格式”,使其与数据库中表结构对应的自动一一对应,设置完毕后,点击【确定】即可。
【表输出】组件
双击【表输出】组件,配置好自己需要写入的库和表,以及对应的数据库字段信息,然后点击【确定】即可。
测试运行
注意:
配置【获取文件名】组件中的正则表达式时,应该填入c_.*\.csv 或c_.*.csv、c_.*csv,注意“*”符号前的“." 这个符号,否则得到的列表可能不是自己想要的。