简介
Database 连接器可连接第三方关系型数据库系统并执行 SQL 操作。用户通过连接器配置来配置数据库的连接参数,配置成功后便可执行对应的数据库操作。
Database 连接器目前支持的数据库有:MySQL、Oracle、PostgreSQL、SQL Server。
连接器配置
Database 连接器配置参数
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
数据库类型 | enum | 数据库类型,支持 MySQL、Oracle、PostgreSQL、SQL Server | 是 | - |
地址 | string | 数据库地址 | 是 | - |
端口号 | int | 数据库端口号 | 是 | - |
用户名 | string | 用于连接数据库的用户名 | 是 | - |
密码 | string | 用于连接数据库的用户密码 | 是 | - |
超时时间 | int | 数据库连接超时时间,时间单位:秒,最长超时时间为30秒 | 否 | 5 |
连接器配置界面如下:
操作说明
Database 连接器目前支持查询、插入、更新、删除、批量插入、批量合并、批量删除、存储过程(目前仅支持 SQL Server)操作。在配置连接器和集成流数据流转过程中,数据库字段类型与数据连接器 iPaaS 字段类型的映射关系见 附录。
查询操作
参数配置
查询逻辑配置
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
操作模式 | enum | 操作模式,支持简单模式-单表查询、简单模式-多表查询和 SQL 模式 | 是 | SQL 模式 |
查询语句 | string | SQL 模式参数,SQL 语句,支持两种写法: 1. 原生 SQL。例如:"select * from p where age=12" 2. 嵌入占位符的 SQL,使用参数化输入(冒号+参数),可防止 SQL 注入。例如:"select * from p where age = :age",在“输入参数”中,填入变量名 key 为"age",value 值为"12",此时待执行的查询语句为“select * from p where age=12” | 是 | - |
输入参数 | dict | SQL 模式参数,输入参数列表,列表元素为字典,key 对应“查询语句”中的参数化变量名,key 值需要与参数化变量名一致,value 为该变量的值 | 否 | - |
输出
查询操作执行成功后,输出结果会保存在 Message 消息体的 payload;执行失败后,错误信息会保存在 Message 消息体的 error。
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为 list 类型,list 成员为 dict 类型,键表示数据库字段名称,值表示数据库字段值;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为dict 类型,包含 “Code” 和 “Description” 字段:“Code” 字段表示错误类型,“Description” 字段表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
例如:执行成功后,message payload 值如下:
[{"book_auth": "aaa","book_id": 1,"book_name": "a","book_price": "25.16"},{"book_auth": "bbb","book_id": 2,"book_name": "b","book_price": "15.26"}]
执行失败后,message error 值如下:
{"Code": "CORE:RUNTIME","Description": "Login error: mssql: Cannot open database \\"test\\" that was requested by the login. Using the user default database \\"master\\" instead."}
案例
1. 添加 Database 连接器组件,选择查询操作。
2. 新建连接器配置,填写配置参数,单击测试连接,测试连接器配置是否正确。
3. 在通用配置中,填入 SQL 语句及输入参数。例如:“查询语句”为
select * from books where book_price > :book_price
,输入参数中 key 为 book_price,value 为30,正确的查询结果如下:
4. 查询结果:
查询成功后,message payload 中包含了查询结果:
若查询过程中出现错误,message error 中会包含错误信息:
参数配置
查询逻辑配置
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
操作模式 | enum | 操作模式,支持简单模式-单表查询、简单模式-多表查询和 SQL 模式 | 是 | SQL 模式 |
表选择 | enum | 简单模式-单表查询参数,待查询的数据表 | 是 | - |
字段选择 | list | 简单模式-单表查询参数,查询的数据表字段 | 是 | - |
过滤条件 | list | 简单模式-单表查询参数,查询的过滤条件 | 否 | - |
输出配置
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
输出模式 | enum | 查询所得数据的输出模式,支持普通模式和 RecordSet 模式 | 是 | 普通模式 |
是否缓存 | bool | 输出模式为 RecordSet 模式时的参数,输出的 RecordSet 数据是否支持缓存 | 否 | false |
分区数量 | int | 输出模式为 RecordSet 模式时的参数,输出的 RecordSet 数据分区数设置,范围[1,10] | 是 | 1 |
输出
查询操作执行成功后,输出结果会保存在 Message 消息体的 payload;执行失败后,错误信息会保存在 Message 消息体的 error。
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为 list 类型,list 成员为 dict 类型,键表示数据库字段名称,值表示数据库字段值;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含 “Code” 和 “Description” 字段:“Code” 字段表示错误类型,“Description” 字段表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
案例
1. 添加 Database 连接器组件,选择查询操作。
2. 新建连接器配置或选择已创建的连接器配置。
3. 配置中的“表选择”选择数据表“books”,“字段选择”填写“book_id”和“book_name”字段,输出模式选择普通输出,过滤条件中填写如下内容:
4. 查询成功后,message payload 中包含了查询结果:
参数配置
通用:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
操作模式 | enum | 操作模式,支持简单模式-单表查询、简单模式-多表查询和 SQL 模式 | 是 | SQL 模式 |
查询逻辑配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
连接类型 | enum | 简单模式-多表查询参数,支持 INNER JOIN、LEFT JOIN、RIGHT JOIN | 是 | |
连接条件 | list | 简单模式-多表查询参数,数据表间 join 查询的连接条件 | 是 | - |
过滤条件 | list | 简单模式-单表查询参数,查询的过滤条件 | 否 | - |
字段选择 | list | 简单模式-多表查询参数,查询的数据表字段 | 是 | - |
输出配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
输出模式 | enum | 查询所得数据的输出模式,支持普通模式和 RecordSet 模式 | 是 | 普通模式 |
是否缓存 | bool | 输出模式为 RecordSet 模式时的参数,输出的 RecordSet 数据是否支持缓存 | 否 | false |
分区数量 | int | 输出模式为 RecordSet 模式时的参数,输出的 RecordSet 数据分区数设置,范围[1,10] | 是 | 1 |
输出
查询操作执行成功后,输出结果会保存在 Message 消息体的 payload;执行失败后,错误信息会保存在 Message 消息体的 error。
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为 list 类型,list 成员为 dict 类型,键表示数据库字段名称,值表示数据库字段值;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含 “Code” 和 “Description” 字段:“Code” 字段表示错误类型,“Description” 字段表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
案例
1. 添加 Database 连接器组件,选择查询操作。
2. 新建连接器配置或选择已创建的连接器配置。
3. 在配置中填写如下配置:
查询成功后,message payload 中包含了查询结果:
输出
查询操作执行成功后,输出结果会保存在 Message 消息体的 payload;执行失败后,错误信息会保存在 Message 消息体的 error。
组件输出的 message 信息如下:
message属性 | 值 |
payload | 执行成功后,payload 为 RecordSet 类型数据;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为dict 类型,包含 “Code” 和 “Description” 字段:“Code” 字段表示错误类型,“Description” 字段表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
案例
1. 添加 Database 连接器组件,选择查询操作。
2. 新建连接器配置或选择已创建的连接器配置。
3. 在配置中填写如下配置,输出模式选择 RecordSet 模式:
查询成功后,message payload 中包含了查询结果,该查询结果为 RecordSet 类型:
可以通过 “For Each” 组件对 RecordSet 数据进行迭代:
迭代结果如下:
插入操作
参数配置
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
操作模式 | enum | 支持简单模式和 SQL 模式;简单模式可辅助编写操作语句,SQL 模式下可编写结构化 SQL 语句 | 是 | SQL 模式 |
插入语句 | string | SQL 模式参数,SQL 语句,支持两种写法: 原生 SQL 嵌入占位符的 SQL,使用参数化输入(冒号+参数),可防止 SQL 注入 | 是 | - |
输入参数 | dict | SQL 模式,输入参数列表,列表元素为字典,key 对应“插入语句”中的参数化变量名,key 值需要与参数化变量名一致,value 为该变量的值 | 否 | - |
输出
操作执行成功后,输出结果会保存在 message 消息体的 payload;执行失败后,错误信息会保存在 message 消息体的 error。
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为 list 类型,包含 “rowsAffected” 字段,当为 MySQL 数据库时,会额外包含 “lastId” 字段;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含 “Code” 和 “Description” 元素:“Code” 表示错误类型,“Description” 表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
例如:MySQL 数据库的插入操作,执行成功后,message payload 值如下:
{"lastId": 1,"rowsAffected": 1}
执行失败后,message error 值如下:
{"Code": "CORE:RUNTIME","Description": "Login error: mssql: Cannot open database \\"test\\" that was requested by the login. Using the user default database \\"master\\" instead."}
案例
1. 添加 Database 连接器组件,选择插入操作。
2. 新建连接器或选择已创建的连接器。
3. 在通用配置中,填入 SQL 语句及输入参数。例如:“插入语句”为
insert into books (book_auth, book_name, book_price) values (:book_auth, :book_name, :book_price)
,输入参数使用 Dataway 格式编写。def dw_process(msg):return {'book_auth': 'test','book_name': 'ipaas','book_price': 100,}
4. 插入结果:
插入成功后,message payload 中包含了执行结果:
若插入过程中出现错误,message error 中会包含错误信息:
参数配置
通用:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
操作模式 | enum | 支持简单模式和 SQL 模式;简单模式可辅助编写操作语句,SQL 模式下可编写结构化 SQL 语句 | 是 | SQL 模式 |
插入逻辑配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
表选择 | enum | 简单模式参数,待操作的数据表 | 是 | - |
字段配置 | list | 简单模式参数,待插入的字段信息,包括字段名称和字段值 | 是 | - |
输出
操作执行成功后,输出结果会保存在 message 消息体的 payload;执行失败后,错误信息会保存在 message 消息体的 error。
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为 list 类型,包含 “rowsAffected” 字段,当为 MySQL 数据库时,会额外包含 “lastId” 字段;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含 “Code” 和 “Description” 元素:“Code” 表示错误类型,“Description” 表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
案例
1. 添加 Database 连接器组件,选择插入操作。
2. 新建连接器配置或选择已创建的连接器配置。
3. 在配置中填写如下配置:
4. 插入成功后,message payload 如下:
更新操作
参数配置
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
操作模式 | enum | 支持简单模式和 SQL 模式;简单模式可辅助编写操作语句,SQL 模式下可编写结构化 SQL 语句 | 是 | SQL 模式 |
更新语句 | string | SQL 模式参数,SQL 语句,支持两种写法: 原生 SQL 嵌入占位符的 SQL,使用参数化输入(冒号+参数),可防止 SQL 注入 | 是 | - |
输入参数 | dict | SQL 模式,输入参数列表,列表元素为字典,key 对应“更新语句”中的参数化变量名,key 值需要与参数化变量名一致,value 为该变量的值 | 否 | - |
输出
操作执行成功后,输出结果会保存在 Message 消息体的 payload;执行失败后,错误信息会保存在 Message 消息体的 error。
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为 list 类型,包含 “rowsAffected” 字段;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含 “Code” 和 “Description” 元素:“Code” 表示错误类型,“Description” 表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
例如,执行成功后,message payload 值如下:
{"rowsAffected": 1}
执行失败后,message error 值如下:
{"Code": "CORE:RUNTIME","Description": "Login error: mssql: Cannot open database \\"test\\" that was requested by the login. Using the user default database \\"master\\" instead."}
案例
1. 添加 Database 连接器组件,选择更新操作。
2. 新建连接器或选择已创建的连接器。
3. 在通用配置中,填入 SQL 语句及输入参数。例如,“更新语句”为
update books set book_price = :book_price where book_name = :book_name
,输入参数如下:def dw_process(msg):return {'book_price': 200,'book_name': 'ipaas'}
4. 更新结果:
更新成功后,message payload 中包含了执行结果:
若更新过程中出现错误,message error 中会包含错误信息:
参数配置
通用:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
操作模式 | enum | 支持简单模式和 SQL 模式;简单模式可辅助编写操作语句,SQL 模式下可编写结构化 SQL 语句 | 是 | SQL 模式 |
更新逻辑配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
表选择 | enum | 简单模式参数,待操作的数据表 | 是 | - |
字段配置 | list | 简单模式参数,待更新的字段名称和字段值 | 是 | - |
过滤条件 | list | 简单模式参数,更新条件 | 否 | - |
输出
操作执行成功后,输出结果会保存在 Message 消息体的 payload ;执行失败后,错误信息会保存在 Message 消息体的 error。
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为 list 类型,包含 “rowsAffected” 字段;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含 “Code” 和 “Description” 元素:“Code” 表示错误类型,“Description” 表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
案例
1. 添加 Database 连接器组件,选择更新操作。
2. 新建连接器或选择已创建的连接器。
3. 在通用配置中,填入如下配置:
4. 更新成功后,message payload 中包含了执行结果:
删除操作
参数配置
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
操作模式 | enum | 支持简单模式和 SQL 模式;简单模式可辅助编写操作语句,SQL 模式下可编写结构化 SQL 语句 | 是 | SQL 模式 |
删除语句 | string | SQL 模式,SQL 语句,支持两种写法: 原生 SQL 嵌入占位符的 SQL,使用参数化输入(冒号+参数),可防止 SQL 注入 | 是 | - |
输入参数 | dict | SQL 模式,输入参数列表,列表元素为字典,key 对应“删除语句”中的参数化变量名,key 值需要与参数化变量名一致,value 为该变量的值 | 否 | - |
输出
操作执行成功后,输出结果会保存在 message 消息体的 payload;执行失败后,错误信息会保存在 message 消息体的 error。
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为 list 类型,包含“rowsAffected”字段;执行失败后,payload为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含 “Code” 和 “Description” 元素:“Code” 表示错误类型,“Description” 表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
例如:执行成功后,message payload 值如下:
{"rowsAffected": 1}
执行失败后,message error 值如下:
{"Code": "CORE:RUNTIME","Description": "Login error: mssql: Cannot open database \\"test\\" that was requested by the login. Using the user default database \\"master\\" instead."}
案例
1. 添加 Database 连接器组件,选择删除操作。
2. 新建连接器或选择已创建的连接器。
3. 在通用配置中,填入 SQL 语句及输入参数。例如:“删除语句”为
delete from books where book_name = :book_name
,输入参数如下:def dw_process(msg):return {'book_name': 'ipaas'}
4. 删除结果:
删除成功后,message payload 中包含了执行结果:
若执行过程中出现错误,message error 中会包含错误信息:
参数配置
通用:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
操作模式 | enum | 支持简单模式和 SQL 模式;简单模式可辅助编写操作语句,SQL 模式下可编写结构化 SQL 语句 | 是 | SQL 模式 |
删除逻辑配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
表选择 | enum | 简单模式参数,待操作的数据表 | 是 | - |
过滤条件 | list | 简单模式参数,删除条件 | 否 | - |
输出
操作执行成功后,输出结果会保存在 message 消息体的 payload;执行失败后,错误信息会保存在 message 消息体的 error。
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为 list 类型,包含 “rowsAffected” 字段;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含 “Code” 和 “Description” 元素:“Code” 表示错误类型,“Description” 表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
案例
1. 添加 Database 连接器组件,选择删除操作。
2. 新建连接器或选择已创建的连接器。
3. 在通用配置中,填入如下配置:
4. 删除成功后,message payload 中包含了执行结果:
批量插入操作
参数配置
输入配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
输入数据集 | Recordset 类型 | 输入数据集,若未填写,默认为 message 的 payload | 是 | - |
输入数据集 Schema 校准 | List | 对输入数据集进行字段校准 | 否 | - |
插入逻辑配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
表选择 | Enum | 待操作的数据表 | 否 | - |
过滤条件 | List | 批量更新的过滤条件 | 是 | - |
输出
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为前一个组件的 payload;执行失败后,payload为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含“Code”和“Description”元素:“Code”表示错误类型,“Description”表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
案例
1. 添加 Database 连接器组件,选择批量插入操作。
2. 新建连接器或选择已创建的连接器。
3. 通过 RecordSet Encoder 生成 RecordSet 类型的数据,在 Encoder 组件中设置如下 Schema:
4. 在 Encoder 组件选择 Set Payload 组件,按如下配置设置:
def dw_process(msg):return [['xiaomi',66.66,'e'], ['xiaoming',66.66,'f'], ['xiaohua',66.66,'g']]
5. 测试组件如下:
6. 构造好 RecordSet 数据后,输入数据集如下:
def dw_process(msg):return msg.payload
7. Database组件通过数据表字段和 RecordSet 数据字段的映射关系来构造插入的数据信息,配置如下:
8. 批量插入成功后,message 的 error 信息为空。
批量合并操作
参数配置
输入配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
输入数据集 | Recordset 类型 | 输入数据集,若未填写,默认为 message 的 payload | 是 | - |
输入数据集 Schema 校准 | list | 对输入数据集进行字段校准 | 否 | - |
合并逻辑配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
表选择 | enum | 待操作的数据表 | 否 | - |
过滤条件 | list | 批量更新的过滤条件 | 是 | - |
字段映射 | enum | 字段映射,数据表字段和 Recordset 类型数据字段的映射,插入数据表字段的值为 Recordset 类型数据字段的值 | 是 | - |
只执行插入 | bool | 数据不存在时执行插入操作 | 是 | false |
只执行更新 | bool | 数据存在时执行更新操作 | 是 | false |
输出
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为前一个组件的 payload;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含 “Code”和“Description” 元素:“Code” 表示错误类型,“Description” 表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
案例
1. 新建连接器或选择已创建的连接器。
2. 通过 RecordSet Encoder 组件生成 RecordSet 类型的数据。
3. 构造好 RecordSet 数据后,添加 Database 组件的“批量合并”操作,数据表字段和RecordSet数据字段的关系构成了合并的过滤条件,数据表字段和 RecordSet 数据字段的映射构成了合并的字段映射;Database 组件配置如下:
4. 批量插入成功后,message 的 error 信息为空。
批量删除操作
参数配置
输入配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
输入数据集 | Recordset 类型 | 输入数据集,若未填写,默认为 message 的 payload | 是 | - |
输入数据集 Schema 校准 | List | 对输入数据集进行字段校准 | 否 | - |
删除逻辑配置:
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
表选择 | Enum | 待执行操作的数据表 | 否 | - |
过滤条件 | List | 批量删除的条件 | 是 | - |
输出
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,payload 为前一个组件的 payload;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含“Code”和“Description”元素:“Code”表示错误类型,“Description”表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
案例
1. 新建连接器或选择已创建的连接器。
2. 通过“RecordSet Encoder”组件生成 RecordSet 类型的数据。
3. 构造好RecordSet数据后,添加 Database 组件的“批量删除”操作,数据表字段和 RecordSe t数据字段的关系构成了合并的过滤条件,Database 组件配置如下:
4. 组件如下:
5. 批量插入成功后,message 的 error 信息为空。
存储过程操作
参数配置
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
存储过程名称 | string | 待调用存储过程的名称 | | - |
存储过程输入参数 | string | 待调用存储过程的输入参数,输入参数顺序必须和存储过程传入参数顺序一致,使用参数化(冒号+参数名)输入,参数间以英文逗号相隔 | 是 | - |
输入参数 | dict | 输入参数列表,列表元素为字典,key对应“存储过程输入参数”中的变量名,key值需要与参数化变量名一致,value 为该变量的值 | 否 | - |
存储过程输出参数 | list | 待调用存储过程的输出参数信息,输出参数顺序需要和存储过程的输出参数一致,列表添加时需要输入“字段名称”及“字段类型”信息;若使用表达式输入,列表元素字段名称命名为'fieldName',字段类型为'fieldType' | | - |
输出
操作执行成功后,输出结果会保存在message消息体的payload;执行失败后,错误信息会保存在 message 消息体的 error。
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 执行成功后,存储过程输出的payload取决于输出参数,payload 为 list 类型,list 成员为 dict 类型,键表示输出参数字段名称,值表示输出参数字段值;执行失败后,payload 为空 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含“Code”和“Description”元素:“Code”表示错误类型,“Description”表示错误具体信息 |
attribute | 继承上个组件的 attribute 信息 |
variable | 继承上个组件的 variable 信息 |
例如:执行成功后,message payload 值如下,其中“id”和“book_name”为指定的输出参数字段:
[{"id": 1,"book_name": "a",},{"id": 2,"book_name": "b",}]
执行失败后,message error 值如下:
{"Code": "CORE:RUNTIME","Description": "Login error: mssql: Cannot open database \\"test\\" that was requested by the login. Using the user default database \\"master\\" instead."}
案例
1. 添加 Database 连接器组件,选择存储过程操作。
2. 新建连接器或选择已创建的连接器。
3. 在通用配置中,填入参数信息。例如:“存储过程”为 getBookId,输入参数 dataway 表达式如下:
def dw_process(msg):return {'name': 'aaa','price': 0,}
输出参数表达式如下:
def dw_process(msg):return [{'fieldName':'id', 'fieldType':'INT'},{'fieldName':'book_name', 'fieldType':'VARCHAR'}]
界面如图:
4. 执行结果:
执行成功后,message payload 中包含了执行结果:
若执行过程中出现错误,message error 中会包含错误信息:
附录
MySQL 字段 | iPaaS 数据类型 |
TINYINT | 整数 |
SMALLINT | 整数 |
MEDIUMINT | 整数 |
INT | 整数 |
BIGINT | 整数 |
DECIMAL | 十进制 |
NUMERIC | 十进制 |
FLOAT | 浮点数 |
DOUBLE | 浮点数 |
BIT | 整数 |
DATE | 日期 |
TIME | 时间 |
DATETIME | 时刻 |
TIMESTAMP | 时刻 |
YEAR | 整数 |
CHAR | 字符串 |
VARCHAR | 字符串 |
BINARY | 字节数组 |
VARBINARY | 字节数组 |
TINYBLOB | 字节数组 |
MEDIUMBLOB | 字节数组 |
BLOB | 字节数组 |
LONGBLOB | 字节数组 |
TINYTEXT | 字符串 |
MEDIUMTEXT | 字符串 |
TEXT | 字符串 |
LONGTEXT | 字符串 |
JSON | 字符串 |
Database 连接器不支持 MySQL 的空间数据类型、ENUM 类型、SET 类型的处理,对于不支持的 MySQL 字段类型统一按照字符串类型进行映射。
Oracle 数据库与数据连接器的字段映射:
Oracle 字段 | iPaaS 数据类型 |
CHAR | 字符串 |
NCHAR | 字符串 |
VARCHAR | 字符串 |
VARCHAR2 | 字符串 |
NVARCHAR2 | 字符串 |
LONG | 字符串 |
NUMBER | 十进制 |
DECIMAL | 十进制 |
FLOAT | 浮点数 |
BINARY_FLOAT | 浮点数 |
BINARY_DOUBLE | 浮点数 |
DATE | 日期 |
TIMESTAMP | 时刻 |
TIMESTAMP WITH TIME ZONE | 时刻 |
TIMESTAMP WITH LOCAL TIME ZONE | 时刻 |
BLOB | 字节数组 |
CLOB | 字节数组 |
NCLOB | 字节数组 |
BFILE | 字节数组 |
RAW | 字节数组 |
LONG RAW | 字节数组 |
Database 连接器不支持 Oracle 的 INTERVAL DAY TO SECOND 类型、INTERVAL YEAR TO MONTH 类型、ROWID 类型、UROWID 类型、ANSI, DB2 和 SQL/DS 数据类型、用户自定义等数据类型的处理,对于不支持的 Oracle 字段类型统一按照字符串类型进行映射。