【NIFI】实现ORACLE->ORACLE数据同步
【NIFI】实现ORACLE->ORACLE数据同步
需求
- 使用
nifi
实现oracle->oracle
不同数据库之间的数据同步, 如果想实现oracle->oracle
技术有很多,例如使用oracle golden gate
或者是kettle
等,或者是使用oralce的dblink技术也能实现。当让如果使用dblink就不是数据同步了,属于数据共享了。
配置如下
1、QueryDatabaseTable:用于读取数据
2、ConvertAvroToJSON:读取数据转换JSON
3、ConvertJSONToSQL: 转换插入语句
4、PutSQL: 执插入语句
5、ConvertJSONToSQL: 转换更新语句
6、PutSQL: 执更新语句
1、QueryDatabaseTable 配置
- Database Connection Pooling Service:数据库连接池,点击后面红色的按钮可以添加:
Database Connection URL:jdbc:oracle:thin:@
<ip>:<port>/<db>
DatabaseDriver Class Name:oracle.jdbc.driver.OracleDriver
Database DriverLocation(s):/app/nifi-1.27.0/extensions/ojdbc6-11.2.0.4.0-atlassian-hosted.jar
Database User:<username>
Password:<password>
以上根据实际情况配置,如果存在多个jar可以只填写到文件夹;
点击小闪电可以启动获取是关闭连接池
- JDBC Connection Pool:ORACLE-TEST-CA-155
- Database Type:ORALCE
- Table Name:application_20230210
- Maximum-value Columns:OID
Maximum-value Columns:填写了意味着每次只比上一次同步记录值大的数据;
2、ConvertAvroToJSON 配置
不用做任何调整,使用默认位置
3、ConvertJSONToSQL 配置
- JDBC Connection Pool:ORACLE-DEV-PO-119
- Statement Type:INSERT
- Table Name:APPLICATION_20230210
- Update Keys:OID
注意避坑:Table Name 必须大写,ORACLE 默认大小写不敏感的,否则无法实现数据同,ConvertJSONToSQL 在生成sql时候去读的是oracle表的字段
4、PutSQL 配置
- JDBC Connection Pool:ORACLE-DEV-PO-119
5、ConvertJSONToSQL 配置
- JDBC Connection Pool:ORACLE-DEV-PO-119
- Statement Type:UPDATE
- Table Name:APPLICATION_20230210
- Update Keys:OID
注意避坑:Table Name 必须大写,ORACLE 默认大小写不敏感的,否则无法实现数据同,ConvertJSONToSQL 在生成sql时候去读的是oracle表的字段
6、PutSQL 配置
- JDBC Connection Pool:ORACLE-DEV-PO-119
连线配置
1、QueryDatabaseTable:用于读取数据
2、ConvertAvroToJSON:读取数据转换JSON
3、ConvertJSONToSQL: 转换插入语句
4、PutSQL: 执插入语句
5、ConvertJSONToSQL: 转换更新语句
6、PutSQL: 执更新语句
1->2 QueryDatabaseTable -> ConvertAvroToJSON
2->3 ConvertAvroToJSON-> ConvertJSONToSQL
3->4ConvertJSONToSQL -> PutSQL
2->5 ConvertAvroToJSON -> ConvertJSONToSQL
5->6ConvertJSONToSQL -> PutSQL
其他场景的均终止即可
最后节点的关系是全部终止
启动流程
对流程中的每个步骤进行启动
这样就完成了同步的配置,接下来就能去检查数据表中的数据了