本示例介绍如何将区块链上的数据导出至数据库中。您可使用示例SQL在数据库中创建中间表write_set,业务表taskmgr,以及trigger(负责将中间表的记录转换并写入业务表)。当区块链上发生交易时,您从中间表中可查询链上原始的交易写入集合,从业务表中查询最终信息。
前置条件
您需要先在区块链实例中安装云服务集成。
拥有一个公网可连接的数据库实例(本示例以 RDS for MySQL 为例, 版本 >= 5.6)。
本地安装 nodev8 环境(>=8.17.0)。
操作步骤
连接到数据库实例,创建相关的库和表:
进入 DMS 控制台,登录数据库实例;
在上方菜单栏选择 “SQL 窗口 -> SQL 窗口” 开启一个新的 SQL 窗口。
将 SQL 文件
./blockchain2db/taskmgr.sql
中的内容复制到 SQL 窗口中执行,确保语句全部执行成功;
按照发起示例交易的步骤1,在通道上安装并实例化链码
taskmgr
。在控制台创建云服务集成数据库触发器:
选择通道
taskmgr
及链码taskmgr
;配置触发器的事件类型为
Tx
;数据库类型选择
MySQL
(这里以 MySQL 为例,可以根据实际需要选择不同的数据库类型);根据帮助,依次填写数据库实例的地址、用户名和密码;
数据库填写
octopus
;表名填写
write_set
。
按照发起示例交易的后续步骤,在通道上发起示例交易。
之后您可以在数据库
octopus
中查看导出的数据:查看中间表中的原始交易写入集合:
SELECT * FROM write_set
查看业务表中的审批任务详情:
SELECT * FROM taskmgr
发起示例交易
进入
blockchain2sms
目录,按照注释修改 main.js 中的配置参数,填入REST API地址、Refresh Token、通道名和智能合约名称。更多信息请参考文档使用REST API。执行
npm install
安装依赖包,通过node main.js
发起示例交易。
成功示例输出
Data pushed to blockchain with transaction 701c7006f26aed8457273a00bbfcc8cea4d75eac958996e07837036ea7e2fdac
{ id: '701c7006f26aed8457273a00bbfcc8cea4d75eac958996e07837036ea7e2fdac',
status: '200',
events:
[ { type: 'Contract',
platform: 'Fabric',
instance_id: 'csi-e2ehmfqasth-bcw7tzao2dzeo',
network: '',
id: '',
name: 'event-create-task',
content: 'eyJuY...TAz' }
Data pushed to blockchain with transaction 60a06a189415db587b49cbf91b46467bce1ea16490b19f6dfc8d520aa31240bc
{ id: '60a06a189415db587b49cbf91b46467bce1ea16490b19f6dfc8d520aa31240bc',
status: '200',
events:
[ { type: 'Contract',
platform: 'Fabric',
instance_id: 'csi-e2ehmfqasth-bcw7tzao2dzeo',
network: '',
id: '',
name: 'event-task-finished',
content: 'eyJuY...p7In0=' } ],
data: 'eyJu...In0=' }
Data pushed to blockchain with transaction 7810e0496a1c91a16102736b00a6f26da0baa42874a907fff26bff1b7eb3bf27
{ id: '7810e0496a1c91a16102736b00a6f26da0baa42874a907fff26bff1b7eb3bf27',
status: '200',
events: [],
data: 'eyJu...nIn0=' }