【Apache NIFI Processor】自定义 iPutJDBC
1 iPutJDBC NIFI 界面属性配置
iPutJDBC
描述:将数据存入支持jdbc的数据库。注意:理论上可以支持所有的支持jdbc的数据,但是考虑到各数据库可能有自己的方言,目前支持oracle/sqlServer/mysql以及与mysql兼容的数据库。其他类型的数据并未做严格的测试。
属性名 | 说明 | 详细说明 |
JDBC-Type | 数据源类型 | |
Database Connection Pooling Service | 数据库连接服务 | |
Table Name | 数据库表名 | |
Put Record Statement Type | 操作类型 | INSERT:插入; UPDATE:更新; UPSERT:更新插入; DELETE:删除; USE_ATTR_TYPE:使用statement.type属性。属性的值需要为:INSERT、UPDATE、UPSERT或者是DELETE。 |
Data Type | 来源数据类型 |
avro / json 原始数据的格式,如果没有配置Record Reader,则此处会根据avro或者json来处理对应的数据。 如果是json,则要求是标准的只有一层嵌套的json数组或者是简单的json对象。 |
Update or Delete Key | 唯一值标识 |
逗号分隔的列名列表,用于唯一标识数据库中UPDATE/DELETE语句的行。 拼装后,相当于SQL中where中的语句。 a. 此时将读取对应表中的主键,将做为UPDATE/DELETE数据的条件。如果既不设置,表中又没有主键, 将会提示错误 b. 当目标数据库类型为mysql或者postgresql9.5以上版本时,若对应表的主键为比对key时,建议设空,性能较好 2.2.如果设置了,将会根据设定的值去更新数据。 |
Not Update Column | 忽略更新的字段 | 逗号分隔的列名列表,当操作类型为UPDATE时,此值中的列不会进行更新。 |
Case Convert | 表名和列名大小写转换 |
NONE/toUpperCase/toLowerCase 输入的表名及列名是否进行大小写转换。 |
Record Reader | 文件解析器。 | 默认为Avro Reader。Avro为该数据流系统的通用格式,可以自动解析。如果源始数据不为avro,或者是不使用avro内置的schema,则需要进行相应的配置。 |
Statistics Name | 用于统计数据用的流程名称。 | 如果不配置,将会使用默认的流程名 |
Rollback On Failure | 失败回滚 |
补充说明:
- Database Connection Pooling Service:数据库连接服务,用于连接数据库edu_origin-sysadmin
2 iPutJDBC Dataflow 界面属性配置
数据开发--数据流工具--流程编排--加载--JDBC输出
属性名 | 详细说明 |
数据源类型 | |
数据库连接 | 数据库连接服务 |
表名 | |
操作类型 | INSERT:插入; UPDATE:更新; UPSERT:更新插入; DELETE:删除; USE_ATTR_TYPE:使用statement.type属性。属性的值需要为:INSERT、UPDATE、UPSERT或者是DELETE。 |
唯一值标识 |
逗号分隔的列名列表,用于唯一标识数据库中UPDATE/DELETE语句的行。 拼装后,相当于SQL中where中的语句。 a. 此时将读取对应表中的主键,将做为UPDATE/DELETE数据的条件。如果既不设置,表中又没有主键, 将会提示错误 b. 当目标数据库类型为mysql或者postgresql9.5以上版本时,若对应表的主键为比对key时,建议设空,性能较好 2.2.如果设置了,将会根据设定的值去更新数据。 |
忽略更新的字段 | 逗号分隔的列名列表,当操作类型为UPDATE时,此值中的列不会进行更新。 |
失败回滚 | |
来源数据类型 |
avro / json 原始数据的格式,如果没有配置Record Reader,则此处会根据avro或者json来处理对应的数据。 如果是json,则要求是标准的只有一层嵌套的json数组或者是简单的json对象。 |
输入的表名列名大小写转换 |
NONE/toUpperCase/toLowerCase 输入的表名及列名是否进行大小写转换。 |
Record Reader | 默认为Avro Reader。Avro为该数据流系统的通用格式,可以自动解析。如果源始数据不为avro,或者是不使用avro内置的schema,则需要进行相应的配置。 |
流程名称 | 如果不配置,将会使用默认的流程名 |
3 iPutJDBC 源码逻辑