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

相关推荐
暴力求解4 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip
oradh4 小时前
Oracle闪回技术操作总结
数据库·oracle·oracle闪回技术操作总结·oracle闪回·flashback技术
JoyCong19985 小时前
ToDesk个人版、专业版、游戏版、设计版、性能版、团队版权益介绍
大数据·运维·游戏·远程工作·远程操作
ltl5 小时前
RocksDB 并发 Compaction 与 Rate Limiter
数据库
Elastic 中国社区官方博客6 小时前
ES95:面向 Elasticsearch 时间序列指标的自适应压缩
大数据·运维·elasticsearch·搜索引擎·架构·全文检索
闻道且行之6 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
80s7776 小时前
动态ip和静态ip有什么区别
服务器·网络·tcp/ip
mqiqe7 小时前
AgentScope Java 2.0 Agent 状态存储(AgentStateStore)深度解析:构建可恢复、可扩展的智能体运行时
java·运维·网络
mennekes7 小时前
数据中心安全配电设备如何选择?
运维·人工智能·科技·安全·制造
夏炳辉.7 小时前
PostgreSQL 高可用集群核心配置参数全解:从原生流复制到 Patroni 企业级方案
数据库·postgresql