使用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/')}

相关推荐
lsh曙光13 分钟前
延时at指令和定时cron指令
linux·服务器·网络
天桥下的卖艺者38 分钟前
使用scitable包,两步生成逆概率删失权重(IPCW)
数据库·r语言
布鲁飞丝40 分钟前
vivo Pulsar 万亿级消息处理实践()-Ansible运维部署
运维·ansible
XR1234567881 小时前
企业全光网络架构选型技术白皮书:从物理层到运维层的全链路分析
运维·网络·架构
隔窗听雨眠1 小时前
AI原生数据库浪潮:国产数据库的架构重构与路径之争
数据库
HiDev_1 小时前
【非标自动化】2、认识元器件(直线模组)
运维·自动化
数据库小学妹1 小时前
数据库选型实战:从数据类型到TCO成本,五维决策框架+九款产品横评
数据库·信创·国产数据库·数据库选型·oracle迁移
夏殇之殁2 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
龙仔7252 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
我不管我就要叫小猪2 小时前
嵌入式Linux----网络通信
linux·运维·服务器