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

相关推荐
运维全栈笔记8 分钟前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
dFObBIMmai25 分钟前
MySQL主从同步中大事务导致的延迟_如何拆分大事务优化同步
jvm·数据库·python
szccyw028 分钟前
mysql如何限制特定存储过程执行权限_MySQL存储过程安全访问
jvm·数据库·python
czlczl2002092544 分钟前
利用“延迟关联”优化 MySQL 巨量数据的深分页查询
数据库·mysql
dllmayday1 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256731 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
Elastic 中国社区官方博客1 小时前
ES|QL METRICS_INFO 和 TS_INFO:为你的时间序列数据建立目录
大数据·数据库·elasticsearch·搜索引擎·信息可视化·全文检索
俺不要写代码2 小时前
数据库:函数
数据库·mysql
2401_882273722 小时前
如何在 CSS 中正确加载本地 JPG 背景图片
jvm·数据库·python
曹牧3 小时前
SQL:多个事务同时修改同一索引块
数据库·sql