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

NiFi重命名移动文件求助:需将文件改为filename.done格式

解决方案:NiFi实现SFTP文件移动并重命名

针对你的需求,我推荐两种不同场景的方案,你可以根据源目录和loaded目录的位置来选择:

场景1:源目录与loaded目录在同一SFTP服务器

这种情况最推荐用MoveSFTP处理器,无需将文件下载到NiFi本地,直接在SFTP服务器内完成移动+重命名,效率最高:

  • 配置SFTP连接参数:和你之前用FetchSFTP的配置一致(主机地址、端口、用户名/密钥、根目录等)
  • 设置Remote Source Directory为你的源文件所在目录
  • 设置Remote Destination Directory为loaded目录的路径
  • 关键配置:在Rename Destination File中填写属性表达式,实现重命名:
    • 如果要给原文件名直接追加.done(比如data.csv → data.csv.done):用 ${filename}.done
    • 如果要替换原文件后缀为.done(比如data.csv → data.done):用 ${filename:substringBeforeLast('.')}.done
  • 该处理器执行后,源文件会直接从源目录移动到loaded目录并完成重命名,源目录不会留下原文件。

场景2:源目录在SFTP服务器,loaded目录是本地磁盘

如果loaded是本地目录,需要先拉取文件到NiFi,再修改文件名后输出:

  1. FetchSFTP:正常配置SFTP连接拉取文件,记得开启Delete Source File为true,这样拉取后源文件会被删除,相当于“移动”的效果
  2. UpdateAttribute:添加或修改filename属性,用表达式实现重命名:
    • 示例属性配置:
      • 属性名:filename
      • 属性值:${filename}.done(或根据需求用${filename:substringBeforeLast('.')}.done)
  3. PutFile:设置Directory为本地的loaded目录,PutFile会自动使用FlowFile的filename属性作为输出文件名,完成最终的移动+重命名。

如果你的loaded目录是另一个远程SFTP服务器,只需要把上述步骤中的PutFile换成PutSFTP,配置目标SFTP的连接参数即可,同样会使用修改后的filename属性作为远程文件名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:01:55