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

如何用Pentaho Data Integration从压缩包子层级提取XLSX并增量加载

Pentaho Kettle读取压缩包内两级子目录XLSX文件方案

一、一次性全量加载流程

解决Get File Names无法遍历压缩包内目录的核心是先解压再遍历,步骤如下:

  • 用Get File Names步骤定位目标压缩包,过滤后缀为.zip(RAR格式需额外安装Kettle插件)。
  • 添加Unzip步骤,将压缩包解压到临时目录(如${JAVA_TMPDIR}/kettle_temp_unzip),勾选Extract all files保留原目录结构。
  • 再次使用Get File Names步骤,目标路径设为临时目录,勾选Include subfolders,过滤文件后缀为.xlsx;如需严格限制两级子目录,可通过正则匹配路径(如.*\/.*\/.*\.xlsx)。
  • 用Microsoft Excel Input步骤读取上一步获取的XLSX文件,配置表头、数据起始行等参数。
  • 通过Table Output步骤将数据写入目标数据库,完成字段映射与数据库连接配置。
  • 最后用Delete file步骤清理临时目录,避免冗余文件占用空间。

二、后续增量加载(仅取前一天文件)

需结合文件/压缩包的日期标识实现,分两种场景:

场景1:压缩包按日期命名(如data_20240520.zip)

  • 在Get File Names步骤中,设置文件名过滤规则为data_${DATE-1, 'yyyyMMdd'}.zip,或通过File age过滤,选择"Modified date is between",时间范围设为前一天00:00至23:59。
  • 后续解压、遍历、读取、加载、清理步骤与全量加载一致。

场景2:压缩包内XLSX文件按日期命名(如report_20240520.xlsx)

  • 先解压目标压缩包,再在Get File Names步骤中,用文件名过滤规则*${DATE-1, 'yyyyMMdd'}*.xlsx筛选前一天的文件,同时可配合File age参数双重校验。
  • 读取与加载步骤同前,建议新增"加载日志表"记录已加载的文件路径,通过Filter rows步骤排除重复文件。

注意事项

  • 若压缩包含中文路径/文件名,需确保Kettle配置文件(kettle.properties)中设置file.encoding=UTF-8避免乱码。
  • 临时目录建议用动态路径(如${USER_DIR}/temp_unzip_${DATE}),防止多实例运行冲突。
  • RAR格式需在Pentaho Marketplace下载并安装RAR插件,否则Unzip步骤无法处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:42:59