# DBAPI编排案例:从mysql查询数据并写入postgresql
# 背景
本案例演示如何使用DBAPI实现跨数据库的数据同步操作。
# 数据库表结构
MySQL学生信息表 
PostgreSQL学生信息表 
# 业务需求
根据学生ID从MySQL查询学生信息,然后将查询结果转换为JSON格式并存储到PostgreSQL的学生信息表中。
# 环境准备
- 确保已配置好MySQL和PostgreSQL数据源连接
- 确认两张表结构已创建完成
- 准备测试数据
# 步骤
# 创建API: 根据id查询mysql中的学生信息
content-type为application/json- 请求参数示例为
{"id": 1} - 注意数据源选择mysql,填写查询sql语句


- 请求测试API,可以看到传递参数
8可以获取LeBron James的数据
# 创建API: 将数据结果写入postgresql
content-type为application/json- 请求参数示例为
{"data": "xxx"} - 数据源选择postgresql,填写插入sql语句


- 请求测试API,可以看到插入一条数据成功

- 在数据库中查看数据,确认信息
yyy插入成功

# 编排API
- 创建编排API,将两个API进行编排
- 定义API的
content-type为application/json - 定义请求参数格式为
{"id": 3}

# 第一个API节点
- API选择
查询mysql学生信息 - 定义节点id为
select - JSON参数填写
{"id": ${parameters.id} }
其中
${parameters.id}是一个groovy代码表达式,其中的parameters变量表示整个编排API最外层的所有参数值,因为整个API的参数格式为{"id": 3},parameters.id就表示取出其中id的值,也就是整个编排API最外层传入的id值

# 第二个API节点
- API选择
新增学生信息 - 节点id为
insert - JSON参数填写
{"data":
${ com.alibaba.fastjson.JSON.toJSONString(results.select.data) }
}
其中
${ com.alibaba.fastjson.JSON.toJSONString(results.select.data) }是一个groovy代码表达式
results变量表示每个节点执行返回的结果集,results.select表示第一个API节点的返回结果
其中的
results.select.data表示从第一个API节点的返回结果中取出data字段的值
然后对
results.select.data使用fastjson转换成json字符串文本(Groovy中可以直接调用java的类)

# 结束节点
- 取第二个API的返回结果作为整个编排API的返回结果

# 测试
- 测试编排API,传入参数
8,可以看到插入1条数据成功

- 在postgresql中查看数据,确认信息插入成功

# 总结
本案例展示了如何通过DBAPI编排功能实现跨数据库的数据迁移,主要包括:
- 创建独立的数据查询和插入API
- 使用编排功能串联两个API
- 通过Groovy表达式实现参数传递和数据转换
- 验证整个流程的正确性