使用apache nifi 从数据库文件表路径拉取远程文件至远程服务器目的地址

使用nifi实现文件增量抽取

1、说明

本次nifi版本使用2.7.1,数据库使用postgresql,本次示例数据库查询结果为:

复制代码
[ {
  "path" : "aa.txt"
}, {
  "path" : "bb.txt"
} ]
2、基本思路

executeSQLRecord->SplitJson->EvaluateJsonPath->FetchSFTP(FetchFTP)->PutSFTP(PutFTP)

executeSQLRecord实现增量同步数据太麻烦,要实现增量同步,可以修改为QueryDatabaseTableRecord 来实现,关键属性:Maximum-value Columns (增量位点)如下:

3、各插件配置
executeSQLRecord

Database Connection Pooling Service 默认没有,新建:DBCPConnectionPool

DBCPConnectionPool,连接使用jdbc连接就行,配置如下 :

新建数据库查询返回使用的格式服务JsonRecordSetWriter,在executeSQLRecord的Record Writer选择使用JsonRecordSetWriter:


SplitJSON

注意:在选择relationships时,不要勾选split,因为下一步的连接关系要使用split,如果这里勾选了split就会失败。因为返回的是JSON数组,所以JsonPath Expression使用$\*


EvaluateJsonPath

FetchSFTP

PutSFTP

后语

如果数据库路径包含文件夹,如:aa/aa.txt,源目录为:/home/test 目的目录为:/home/test_md,在配置putsftp(putftp)时,remote Path使用replace进行替换:

${path:replace('/home/test/', '/home/test_md/')}

相关推荐
tedcloud1236 小时前
Wand-Enhancer 怎么搭建?开源 Wand 客户端增强与远程控制工具介绍
大数据·服务器·人工智能·开源·音视频
程序员清风7 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
天衍四九-7 小时前
MySQL中如何定位慢查询?如果SQL语句执行很慢,如何分析和优化?
数据库·sql·mysql
尚久龙7 小时前
mysql-5.7.26-winx64的安装步骤
数据库·mysql
医疗信息化王工7 小时前
DataForge:基于 Python 的数据库批量导出 Excel 工具——从架构到部署的全流程实战
数据库·python·excel
实心儿儿7 小时前
MySQL 的安装
数据库·mysql·adb
Emily156853598708 小时前
ABB CI867K01 3BSE043660R1
服务器·plc·dcs·abb·ci867k01·3bse043660r1·工控模块
考虑考虑8 小时前
docker compose环境变量替换
运维·后端·自动化运维
Java陈序员8 小时前
轻量运维面板!一款现代化的服务器控制面板工具!
运维·服务器·python·react.js·github
bosins9 小时前
WSL 迁移指南:如何将 Linux 环境完整复制到另一台电脑
linux·运维·服务器