如何在Pentaho中将带日期命名的多CSV批量转为同名独立TXT文件?
批量将带日期命名的CSV文件转成同名TXT文件(Pentaho实现方案)
核心逻辑
通过**作业(Job)控制批量遍历CSV文件,用转换(Transformation)**处理单个文件的格式转换,借助变量传递确保每个CSV生成独立的同名TXT文件。
分步实现
1. 搭建作业框架
新建一个Job,添加以下组件并按顺序连接:
- Start:作业起始节点
- 获取文件列表(Get File Names):遍历目标文件夹下的所有CSV文件
- 转换(Transformation):执行单个文件的CSV转TXT操作
- Success:作业成功结束节点
「获取文件列表」组件配置
- 源文件夹:选择存放CSV文件的目录
- 文件掩码:输入
*.csv(仅匹配CSV文件) - 字段设置:勾选输出以下字段(后续转换要用):
filename_full:完整文件路径(如C:/data/03-16-2024_shopping.csv)filename_no_ext:不带扩展名的文件名(如03-16-2024_shopping)
- 勾选「将结果添加到结果集」,并设置触发方式为“每一行触发”(确保每个文件单独触发转换)
2. 搭建转换逻辑
新建一个Transformation,添加以下组件:
- 文本文件输入(Text File Input):读取单个CSV文件
- 文本文件输出(Text File Output):生成同名TXT文件
「文本文件输入」配置
- 文件/目录:输入变量
${filename_full}(承接作业传递的当前CSV文件路径) - 格式设置:根据你的CSV实际情况配置分隔符、引号规则、编码等(比如逗号分隔、双引号包裹)
「文本文件输出」配置
- 文件/目录:输入
${源文件夹路径}/${filename_no_ext}.txt(替换${源文件夹路径}为你的实际目录,或用变量传递) - 格式设置:选择“文本文件”,分隔符可保持和CSV一致(或按需调整),取消“包含文件名”等多余选项,确保输出内容和原CSV一致,仅扩展名改为TXT
3. 变量传递配置
在作业中,选中「转换」组件,进入「参数」设置:
- 添加参数
filename_full,值为${filename_full}(从作业结果集传递) - 添加参数
filename_no_ext,值为${filename_no_ext} - 确保转换内部的输入输出组件正确引用这些参数
操作示意图
作业结构(Mermaid 流程图)
flowchart LR A[Start] --> B[获取文件列表<br/>(Get File Names)] B -->|每一行触发| C[转换:CSV转TXT] C --> D[Success]
转换内部结构(Mermaid 流程图)
flowchart LR X[文本文件输入<br/>(Text File Input)] --> Y[文本文件输出<br/>(Text File Output)]
注意事项
- 必须勾选「获取文件列表」的「每一行触发」,否则会将所有CSV合并成一个TXT文件
- 变量名称要严格对应,避免拼写错误导致路径无效
- 测试时先用少量CSV文件验证,确保输出TXT的文件名和内容正确
内容的提问来源于stack exchange,提问作者victor viera
相关产品推荐
相关产品推荐

