网站建设收费合同下载网站
【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

 其他场景的均终止即可
 
 最后节点的关系是全部终止
 
启动流程
对流程中的每个步骤进行启动
 
 这样就完成了同步的配置,接下来就能去检查数据表中的数据了
