# DBAPI编排案例:从mysql查询数据并写入postgresql

# 背景

本案例演示如何使用DBAPI实现跨数据库的数据同步操作。

# 数据库表结构

MySQL学生信息表

PostgreSQL学生信息表

# 业务需求

根据学生ID从MySQL查询学生信息,然后将查询结果转换为JSON格式并存储到PostgreSQL的学生信息表中。

# 环境准备

  1. 确保已配置好MySQL和PostgreSQL数据源连接
  2. 确认两张表结构已创建完成
  3. 准备测试数据

# 步骤

# 创建API: 根据id查询mysql中的学生信息

  • content-typeapplication/json
  • 请求参数示例为{"id": 1}
  • 注意数据源选择mysql,填写查询sql语句

  • 请求测试API,可以看到传递参数8可以获取LeBron James的数据

# 创建API: 将数据结果写入postgresql

  • content-typeapplication/json
  • 请求参数示例为{"data": "xxx"}
  • 数据源选择postgresql,填写插入sql语句

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

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

# 编排API

  • 创建编排API,将两个API进行编排
  • 定义API的content-typeapplication/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编排功能实现跨数据库的数据迁移,主要包括:

  1. 创建独立的数据查询和插入API
  2. 使用编排功能串联两个API
  3. 通过Groovy表达式实现参数传递和数据转换
  4. 验证整个流程的正确性