- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 开始使用ROMA Connect
- 实例管理
- 集成应用管理
-
数据源管理
- ROMA Connect支持的数据源
- 接入API数据源
- 接入ActiveMQ数据源
- 接入ArtemisMQ数据源
- 接入DB2数据源
- 接入DIS数据源
- 接入DWS数据源
- 接入DM数据源
- 接入Gauss100数据源
- 接入FTP数据源
- 接入HL7数据源
- 接入HANA数据源
- 接入HIVE数据源
- 接入LDAP数据源
- 接入IBM MQ数据源
- 接入Kafka数据源
- 接入MySQL数据源
- 接入MongoDB数据源
- 接入MQS数据源
- 接入MRS Hive数据源
- 接入MRS HDFS数据源
- 接入MRS HBase数据源
- 接入MRS Kafka数据源
- 接入OBS数据源
- 接入Oracle数据源
- 接入PostgreSQL数据源
- 接入Redis数据源
- 接入RabbitMQ数据源
- 接入RocketMQ数据源
- 接入SAP数据源
- 接入SNMP数据源
- 接入SQL Server数据源
- 接入GaussDB(for MySQL)数据源
- 接入WebSocket数据源
- 接入自定义数据源
- 数据集成指导
- 服务集成指导
- 服务集成指导(旧版界面)
- 消息集成指导
- 设备集成指导
- 扩大资源配额
- 查看审计日志
- 查看监控指标
- 权限管理
- 用户指南(新版)
- 最佳实践
-
开发指南
- 数据集成开发指导
-
服务集成开发指导
- 开发说明
- API调用认证开发(APP认证)
- API调用认证开发(IAM认证)
-
自定义后端开发(函数后端)
- 函数后端脚本开发说明
- AesUtils类说明
- APIConnectResponse类说明
- Base64Utils类说明
- CacheUtils类说明
- CipherUtils类说明
- ConnectionConfig类说明
- DataSourceClient类说明
- DataSourceConfig类说明
- ExchangeConfig类说明
- HttpClient类说明
- HttpConfig类说明
- JedisConfig类说明
- JSON2XMLHelper类说明
- JSONHelper类说明
- JsonUtils类说明
- JWTUtils类说明
- KafkaConsumer类说明
- KafkaProducer类说明
- KafkaConfig类说明
- MD5Encoder类说明
- Md5Utils类说明
- QueueConfig类说明
- RabbitMqConfig类说明
- RabbitMqProducer类说明
- RedisClient类说明
- RomaWebConfig类说明
- RSAUtils类说明
- SapRfcClient类说明
- SapRfcConfig类说明
- SoapClient类说明
- SoapConfig类说明
- StringUtils类说明
- TextUtils类说明
- XmlUtils类说明
- 自定义后端开发(数据后端)
- 后端服务签名校验开发
- 消息集成开发指导
- 设备集成开发指导
-
API参考
- 使用前必读
- API概览
- 如何调用API
- 公共资源API
- 数据集成API
- 服务集成API
- 消息集成API
- 设备集成API
- 应用示例
- 权限和授权项
- 附录
- 历史API
- 修订记录
- SDK参考
-
常见问题
- 实例管理
-
数据集成
-
数据集成普通任务
- FDI各类数据库支持哪些数据类型?
- 跟踪号是什么,能跟踪到数据吗?
- FDI任务是否支持清空目标表?
- FDI任务只能采集单张表到单张表吗?
- 用户创建的FDI任务,同一账号的其他用户可见吗?
- FDI通过公网对接其他租户的MRS HIVE如何配置?
- 从OBS解析文件到RDS数据库,采集过一次后,后面采集会进行更新吗?
- OBS源端的CSV文件解析到关系型数据库时,列的值不对怎么办?
- MRS Hive目标字段和源端字段数据类型不匹配时,数据是否能集成到目标端?
- MRS Hive、MRS HBase和MongoDB的Mapping映射手动输入时,是否区分大小写?
- MRS Hive是否支持分区?
- 源端API类型数据源自定义周期如何设置?
- SAP是否支持分页读取视图?
- 数据集成组合任务
-
数据集成普通任务
- 服务集成
- 消息集成
- 设备集成
-
故障排除
-
数据集成任务
- MRS Hive目标端写入时出现数据乱码
- MRS Hive写入时数据全部写在第一个字段里
- 目标端任务报任务运行超时
- MySQL到MRS Hive时目标端报“could only be written to 0 of the 1 minReplication nodes. There are 2 datanode(s) running and 2 node(s) are excluded in this operation”错误
- Mysql到Mysql时源端报“Illegal mix of collations for operation 'UNION'”错误
- 源端Mysql增量采集每小时执行一次时部分数据丢失
- API到MySQL时源端报“401 unauthorized”错误
- Kafka集到Mysql目标端报“cannot find record mapping field”错误
- API到MySQL的定时任务时会出现源端报“connect timeout”错误
- Kafka到Mysql的实时任务时,MQS中的Topic下有数据,但是FDI任务没有采集到数据。
- Mysql到Mysql的定时任务,源端有类型为tinyint(1),值为2的字段,但是采集到目标端值就变成了1
- 目标端数据源为公网Kafka时,定时任务目标端报“The task executes failed.Writer data to kafka failed”错误
- 数据集成组合任务
- 数据源
- 服务集成
- 设备集成
-
数据集成任务
- 视频帮助
-
更多文档
-
用户指南(阿布扎比区域)
- 产品介绍
- 快速入门
- 开始使用ROMA Connect
- 实例管理
- 集成应用管理
- 数据集成指导
- 服务集成指导
- 消息集成指导
- 设备集成指导
-
数据源管理
- ROMA Connect支持的数据源
- 接入API数据源
- 接入ActiveMQ数据源
- 接入ArtemisMQ数据源
- 接入DB2数据源
- 接入DIS数据源
- 接入DWS数据源
- 接入GaussDB 100数据源
- 接入GaussDB 200数据源
- 接入FTP数据源
- 接入FI HDFS数据源
- 接入FI Hive数据源
- 接入FI Kafka数据源
- 接入HL7数据源
- 接入HANA数据源
- 接入HIVE数据源
- 接入LDAP数据源
- 接入IBM MQ数据源
- 接入Kafka数据源
- 接入MySQL数据源
- 接入MongoDB数据源
- 接入MRS Hive数据源
- 接入MRS HDFS数据源
- 接入MRS HBase数据源
- 接入MRS Kafka数据源
- 接入OBS数据源
- 接入Oracle数据源
- 接入PostgreSQL数据源
- 接入Redis数据源
- 接入RabbitMQ数据源
- 接入SAP数据源
- 接入SNMP数据源
- 接入SQL Server数据源
- 接入TaurusDB数据源
- 接入WebSocket数据源
- 接入自定义数据源
- 资产管理
-
常见问题
- 公共操作
-
数据集成任务
- FDI各类数据库支持哪些数据类型?
- 跟踪号是什么,能跟踪到数据吗?
- FDI任务是否支持清空目标表?
- FDI任务只能采集单张表到单张表吗?
- 用户创建的FDI任务,同一帐号的其他用户可见吗?
- FDI通过公网对接其他租户的MRS HIVE如何配置?
- 从OBS解析文件到RDS数据库,采集过一次后,后面采集会进行更新吗?
- OBS源端的CSV文件解析到关系型数据库时,列的值不对怎么办?
- MRS Hive目标字段和源端字段数据类型不匹配时,数据是否能集成到目标端?
- MRS Hive、MRS HBase和MongoDB的Mapping映射手动输入时,是否区分大小写?
- MRS Hive是否支持分区?
- FDI定时任务的触发时间如何配置?
- 源端API类型数据源自定义周期如何设置?
- 数据集成组合任务
- 服务集成
- 消息集成
- 设备集成
-
故障排除
-
数据集成任务
- MRS Hive目标端写入时出现数据乱码
- MRS Hive写入时数据全部写在第一个字段里
- 目标端任务报任务运行超时
- MySQL到MRS Hive时目标端报“could only be written to 0 of the 1 minReplication nodes. There are 2 datanode(s) running and 2 node(s) are excluded in this operation”错误
- Mysql到Mysql时源端报“Illegal mix of collations for operation 'UNION'”错误
- 源端Mysql增量采集每小时执行一次时部分数据丢失
- API到MySQL时源端报“401 unauthorized”错误
- Kafka集到Mysql目标端报“cannot find record mapping field”错误
- API到MySQL的定时任务时会出现源端报“connect timeout”错误
- Kafka到Mysql的实时任务时,MQS中的Topic下有数据,但是FDI任务没有采集到数据。
- Mysql到Mysql的定时任务,源端有类型为tinyint(1),值为2的字段,但是采集到目标端值就变成了1
- 数据集成组合任务
- 数据源
- 服务集成
- 设备集成
-
数据集成任务
-
开发指南(阿布扎比区域)
-
服务集成开发指导
- 如何选择认证方式
- APP认证开发
- IAM认证开发
- 后端服务签名开发
-
函数API脚本开发
- 编写函数API脚本(Java Script)
- APIConnectResponse类说明
- Base64Utils类说明
- CacheUtils类说明
- CipherUtils类说明
- ConnectionConfig类说明
- DataSourceClient类说明
- DataSourceConfig类说明
- ExchangeConfig类说明
- HttpClient类说明
- HttpConfig类说明
- JedisConfig类说明
- JSON2XMLHelper类说明
- JSONHelper类说明
- JsonUtils类说明
- JWTUtils类说明
- KafkaConsumer类说明
- KafkaProducer类说明
- KafkaConfig类说明
- MD5Encoder类说明
- Md5Utils类说明
- ObjectUtils类说明
- QueueConfig类说明
- RabbitMqConfig类说明
- RabbitMqProducer类说明
- RedisClient类说明
- RomaWebConfig类说明
- RSAUtils类说明
- SapRfcClient类说明
- SapRfcConfig类说明
- SoapClient类说明
- SoapConfig类说明
- StringUtils类说明
- TextUtils类说明
- XmlUtils类说明
- 数据API执行语句开发
- 消息集成开发指导
- 设备集成开发指导
-
服务集成开发指导
- API参考(阿布扎比区域)
-
用户指南(阿布扎比区域)
- 通用参考
链接复制成功!
数据API执行语句开发
SQL语法
- 如果需要把后端服务请求中携带的参数传递给SQL,使用${参数名}的方式传递,其中String类型的参数需要用单引号括起来,int类型的参数则不需要。
如以下示例,name为String类型参数,id为int类型参数。
1
select * from table01 where name='${name}' and id=${id}
- 参数可以在后端服务请求的Headers、Parameters或者Body中传递。
- 如果SQL中的字符串含关键字,需要对字符串转义。
1
select `delete` from table01
若在SQL语句中同时引用多种数据类型的后端请求参数时,系统会默认把传入的参数转换为String类型。因此在执行SQL语句时,需要调用相应的函数对非String类型参数做数据类型转换。
以上面的name(String类型)和id(int类型)参数为例,在同时传入SQL语句时,id参数会被转换为String类型,需要在SQL语句中,使用转换函数把id参数再转换回int类型。此处以cast()函数为例,不同数据库使用的转换函数会有所不同。
1 |
select * from table01 where name='${name}' and id=cast('${id}' as int) |
- 全量查询
1
select * from table01;
- 带参数查询
指把后端服务请求中携带的参数(Headers、Parameters或者Body参数)传递给SQL,为SQL语句提供灵活的条件查询或数据处理能力。
- GET、DELETE方法的API,从请求URL中获取参数。
- POST、PUT方法的API,从Body中获取参数。注意:Body体为application/x-www-form-urlencoded格式。
1
select * from table01 where 1=1 and col01 = ${param01};
- 可选参数查询
1
select * from table01 where 1=1 [and col01 = ${param01}] [and col02 = ${param02}]
- IN查询
1
select * from table01 where 1=1 and col01 in ('${param01}','${param02}');
- UNION查询
- 嵌套查询
1
select * from table01 where 1=1 and col01 in (select col02 from table02 where col03 is not null);
NoSQL(MongoDB、Redis等)兼容的源生命令:
- Redis数据源支持的命令:
GET、HGET、HGETALL、LRANGE、SMEMBERS、ZRANGE、ZREVRANGE、SET、LPUSH、SADD、ZADD、HMSET、DEL
- MongoDB数据源支持的命令:
- 插入String类型的key,value从请求参数中获取。
set hello ${parm01}
- 查询String类型的key
get hello
存储过程调用
当前数据API不支持直接创建存储过程,但是可以执行MySQL、Oracle、PostgreSQL这三种数据源的存储过程,以Oracle数据库为例说明。
- 数据源说明
假设数据库里面有一张表,表结构如下建表语句所示:
1
create table sp_test(id number,name varchar2(50),sal number);
往表中并插入数据,数据集如下表所示:
表1 sp_test表数据集 ID
NAME
SAL
1
ZHANG
5000
2
LI
6000
3
ZHAO
7000
4
WANG
8000
在Oracle数据库中调用存储过程,根据name查询sal的值。
1 2 3 4
create or replace procedure APICTEST.sb_test(nname in varchar, nsal out number) as begin select sal into nsal from sp_test where name = nname; end;
- 数据API中的执行语句说明
数据API调用存储过程时,参数可通过后端服务请求的Headers、Parameters或者Body传递,参数名的语法为:{参数名}.{数据类型}.{传输类型}。
- 数据类型包括String和int。
- 传输类型指入参或出参声明,入参使用in,出参使用out。
数据API中调用存储过程的执行语句示例:
1
call sb_test(${nname.String.in},${nsal.int.out})
该脚本示例中,nname为字符串类型的入参,参数名为nname.String.in ,value则是你要查询的参数值。nsal为数值类型的出参,参数名为nsal.int.out,由于格式限定,出参的value也需要填写,可填写符合数据类型的任意值,不影响输出结果。
说明:
- 数据API中对存储过程的调用,用String和int来区分字符串和数值,无需加单引号,这一点和SQL要求不一样。
- 在后端服务的Headers、Parameters或者Body中定义的参数名不能相同,否则将被覆盖。
多个数据源编排
一个数据API可以包含多个数据源,因此一次API请求可以涉及多个数据源,例如取第一个数据源查询结果作为第二个数据源的参数。
以MySQL为例说明,假设数据API有数据源1和数据源2,user01是数据源1的数据表和user02是数据源2的数据表,两张表的结构如下:
数据源 |
表名 |
参数 |
---|---|---|
数据源1 |
user01 |
|
数据源2 |
user02 |
|
数据源SQL设计如下:
数据源1,在表user01中查找name为“zhang”的数据记录id。
1 |
select id from user01 where name='zhang'; |
数据源2,根据user01中找到的id,在user02中找到对应的数据记录,并把该记录的user_name的值更新为“zhang”。
1 |
update user02 set user_name='zhang' where user_id=${result1[0].id}; |
可选参数的使用
数据API中使用中括号[]标记可选参数,例如以下SQL执行语句:
1 |
select * from table01 where id=${id} [or sex='${sex}'] |
用[]括起来的那部分语句,表示当后端服务请求中携带参数${sex}时候,才会生效;不带参数${sex}的时候,[]括起来的语句在执行时将被忽略。
- 后端服务请求携带了参数id=88,可选参数sex没有携带,则执行SQL语句:
1
select * from table01 where id=88;
- 后端服务请求携带了参数id=88和sex=female,则执行SQL语句:
1
select * from table01 where id=88 or sex='female';