# huaweicloud-batchStartJobs-Java
**Repository Path**: HuaweiCloudDeveloper/huaweicloud-batch-start-jobs-java
## Basic Information
- **Project Name**: huaweicloud-batchStartJobs-Java
- **Description**: 通过Java版SDK创建对比任务并查询对比结果。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master-dev
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-09-16
- **Last Updated**: 2023-11-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 1.介绍
数据复制服务(Data Replication Service,简称DRS)是一种易用、稳定、高效、用于数据库实时迁移和数据库实时同步的云服务。
数据复制服务围绕云数据库,降低了数据库之间数据流通的复杂性,有效地帮助您减少数据传输的成本。
您可通过数据复制服务快速解决多场景下,数据库之间的数据流通问题,以满足数据传输业务需求。
数据复制服务提供了实时迁移、备份迁移、实时同步、数据订阅和实时灾备等多种功能。该示例展示了如何通过Java版SDK创建对比任务并查询对比结果。
## 2.流程图
先创建对比任务,待任务状态为增量中时调用,再根据返回的对比任务ID查询对比结果。

## 3.前置条件
- 1、获取华为云开发工具包(SDK),您也可以查看安装JAVA SDK。
- 2、要使用华为云 Java SDK,您需要拥有华为云账号以及该账号对应的 Access Key(AK)和 Secret Access Key(SK)。具体请参见:[访问秘钥](https://support.huaweicloud.com/usermanual-ca/zh-cn_topic_0046606340.html)
- 3、华为云 Java SDK 支持 **Java JDK 1.8** 及其以上版本。
- 4、创建并启动DRS任务,待任务状态为增量中时调用。
## 4.SDK获取和安装
您可以通过Maven配置所依赖的SDK,具体的SDK版本号请参见 [SDK开发中心](https://sdkcenter.developer.huaweicloud.com/) 。
```xml
com.huaweicloud.sdk
huaweicloud-sdk-drs
3.0.95
```
## 5.关键代码片段
```java
public static void main(String[] args) {
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
// 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
String ak = System.getenv("HUAWEICLOUD_SDK_AK");
String sk = System.getenv("HUAWEICLOUD_SDK_SK");
ICredential auth = new BasicCredentials().withAk(ak).withSk(sk);
// 配置客户端属性
HttpConfig config = HttpConfig.getDefaultHttpConfig();
config.withIgnoreSSLVerification(true);
// 创建DrsClient实例
DrsClient client = DrsClient.newBuilder().withCredential(auth).withHttpConfig(config)
.withRegion(DrsRegion.CN_NORTH_4).build();
CreateCompareTaskRequest createCompareTaskRequest = new CreateCompareTaskRequest();
// 查询任务状态
String status = getStatus(client);
// 增量中才能进行对比
if (QueryJobsReq.StatusEnum.INCRE_TRANSFER_STARTED.getValue().equals(status)) {
CreateCompareTaskReq createCompareTaskReq = new CreateCompareTaskReq();
createCompareTaskReq.withJobId("");
// 创建对象对比
createCompareTaskReq.withObjectLevelCompareType(CreateCompareTaskReq.ObjectLevelCompareTypeEnum.OBJECTS);
createCompareTaskRequest.setBody(createCompareTaskReq);
CreateCompareTaskResponse compareTask = client.createCompareTask(createCompareTaskRequest);
logger.info(compareTask.toString());
// 创建成功后获取对比任务ID,调用查询对比结果接口
getCompareResult(client, compareTask);
}
}
```
## 6.返回结果示例
```java
创建对比任务:
class CreateCompareTaskResponse {
jobId: 6916b750-f0fd-4b21-9712-f097a64jb101
objectLevelCompareCreateResult: class CreateCompareTaskResult {
compareTaskId: 12d4a219-3ded-487b-8762-7888e8d94fa5
errorCode: null
errorMsg: null
}
dataLevelCompareCreateResult: null
errorCode: null
errorMsg: null
}
查询对比结果:
class ListCompareResultResponse {
jobId: 6916b750-f0fd-4b21-9712-f097a64jb101
objectLevelCompareResults: class ObjectCompareResult {
compareTaskId: e4c67213-df06-46bd-8360-3d69820a1fed
objectCompareOverview: [class ObjectCompareResultOverview {
objectType: DB
objectCompareResult: CONSISTENT
targetCount: 1
sourceCount: 1
diffCount: 0
}, class ObjectCompareResultOverview {
objectType: TABLE
objectCompareResult: CONSISTENT
targetCount: 1
sourceCount: 1
diffCount: 0
}, class ObjectCompareResultOverview {
objectType: TABLE_COLLATION
objectCompareResult: CONSISTENT
targetCount: 1
sourceCount: 1
diffCount: 0
}]
objectCompareDetails: {TABLE=[class ObjectCompareResultDetails {
sourceDbName: test_1
targetDbName: test_1
sourceDbValue: test1
targetDbValue: test1
errorMessage: null
}], TABLE_COLLATION=[class ObjectCompareResultDetails {
sourceDbName: test_1
targetDbName: test_1
sourceDbValue: 'test1'.'utf8mb4_general_ci'
targetDbValue: 'test1'.'utf8mb4_general_ci'
errorMessage: null
}], DB=[class ObjectCompareResultDetails {
sourceDbName: test_1
targetDbName: test_1
sourceDbValue: test_1
targetDbValue: test_1
errorMessage: null
}]}
errorCode: null
errorMsg: null
}
lineCompareResults: class LineCompareResult {
compareTaskId: null
lineCompareOverview: null
lineCompareOverviewCount: null
lineCompareDetails: null
errorCode: null
errorMsg: null
}
contentCompareResults: class ContentCompareResult {
compareTaskId: null
contentCompareOverview: null
contentCompareOverviewCount: null
contentCompareDetails: null
contentCompareDiffs: null
errorCode: null
errorMsg: null
}
compareTaskListResults: class CompareTaskListResult {
compareTaskList: null
compareTaskListCount: 1
errorMsg: null
errorCode: null
}
errorCode: null
errorMsg: null
}
```
## 7.参考链接
更多详细信息请参考:
- [创建对比任务](https://support.huaweicloud.com/api-drs/drs_03_0136.html)
- [查询对比结果](https://support.huaweicloud.com/api-drs/drs_03_0137.html)
## 8.修订记录
| 发布日期 | 文档版本 | 修订说明 |
| :--------: | :------: | :----------: |
| 2022-09-19 | 1.0 | 文档首次发布 |