You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pentaho DI:如何从上游指定文件夹取文件并按扩展名分流

解决Kettle中Get File Names动态路径获取文件及按扩展名分流的问题

一、先搞定Get File Names动态读取上游字段指定文件夹的问题

你遇到的核心问题是没开启Get File Names的动态行接收功能,默认它只认静态路径,按下面的步骤改配置就行:

  1. 先确认上游步骤(比如Generate Rows、Table Input这类)已经正确输出包含目标文件夹路径的folderName字段,路径格式要对(Windows带盘符,Linux用斜杠,最好末尾加路径分隔符,比如C:\data\或/opt/data/)
  2. 打开Get File Names组件的配置窗口,切换到文件标签页:
    • 勾选「接受来自前面步骤的行」(这个是关键开关!不勾的话只能用静态路径)
    • 「目录」选项选择「字段」,然后从下拉框里选中上游的folderName字段
    • 「文件名」输入框填*,表示获取该文件夹下所有扩展名的文件
    • 其他选项比如「包含子目录」「隐藏文件」按需勾选,确认保存

这样配置后,Get File Names就会根据上游每一行的folderName路径去读取对应文件夹的所有文件了。

二、用Switch/Case按文件扩展名分流

搞定文件读取后,接下来配置分流逻辑,利用Get File Names自带的extension字段(这个字段会自动提取文件的扩展名,不带点,比如test.csv的extension值是csv):

  1. 把Get File Names的输出连线拖到Switch/Case组件上
  2. 打开Switch/Case的配置窗口:
    • 「字段」下拉框选择extension(就是Get File Names输出的扩展名字段)
    • 点击「添加」按钮创建分支:
      • 比如第一个分支,「值」填txt,然后把这个分支的输出连线到处理TXT文件的步骤
      • 第二个分支,「值」填csv,连线到处理CSV文件的步骤
      • 最后别忘了加一个「默认」分支,用来处理所有不在你指定范围内的扩展名文件
    • 如果需要区分扩展名的大小写(比如TXT和txt要分开处理),可以勾选窗口底部的「区分大小写」选项

小提示

  • 可以先在Get File Names后面加一个「预览」步骤,看看输出的字段(比如filename、extension、file_size等)是否符合预期,再配置Switch/Case
  • 如果上游的folderName路径可能存在空格或特殊字符,不用额外处理,Kettle会自动识别

内容的提问来源于stack exchange,提问作者mokolop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:12:13