# huaweicloud-ugo-sql-conversion-java
**Repository Path**: HuaweiCloudDeveloper/huaweicloud-ugo-sql-conversion-java
## Basic Information
- **Project Name**: huaweicloud-ugo-sql-conversion-java
- **Description**: 基于数据库和应用迁移 UGO服务,实现异构数据库之间的SQL语句转换。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master-dev
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 2
- **Created**: 2022-09-21
- **Last Updated**: 2025-01-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 0.版本说明
本示例配套的SDK版本为:3.0.104
## 1.功能介绍
本示例展示如何基于数据库和应用迁移 UGO服务的SDK,实现异构数据库之间的SQL语句转换。
## 2.前置条件
- 已[注册](https://reg.huaweicloud.com/registerui/cn/register.html?locale=zh-cn#/register)华为云,
并完成[实名认证](https://account.huaweicloud.com/usercenter/?region=cn-north-4#/accountindex/realNameAuth) 。
- 已获取华为云开发工具包(SDK)。
- 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。
具体请参考[访问密钥](https://support.huaweicloud.com/usermanual-ca/zh-cn_topic_0046606340.html)。
- 已具备开发环境 ,支持Java JDK 1.8及其以上版本。
## 3.SDK获取和安装
您可以通过Maven配置所依赖的SDK,具体的SDK版本号请参见[SDK开发中心](https://sdkcenter.developer.huaweicloud.com/?language=java) 。
```xml
com.huaweicloud.sdk
huaweicloud-sdk-ugo
3.0.104
```
## 4.示例代码
以下代码展示如何使用SDK实现异构数据库之间的SQL语句转换:
```java
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
*/
package com.huawei.demo;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.http.HttpConfig;
import com.huaweicloud.sdk.ugo.v1.UgoClient;
import com.huaweicloud.sdk.ugo.v1.model.RunSqlConversionRequest;
import com.huaweicloud.sdk.ugo.v1.model.RunSqlConversionResponse;
import com.huaweicloud.sdk.ugo.v1.model.SqlConvertReq;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 数据库和应用迁移 UGO的示例代码:SQL语句转换
*
* @since 2022-08-20
*/
public class SqlConversionDemo {
private static final Logger logger = LoggerFactory.getLogger(SqlConversionDemo.class);
public static void main(String[] args) {
UgoClient ugoClient = getUgoClient();
// Start to convert SQL statement
RunSqlConversionRequest sqlConversionRequest = new RunSqlConversionRequest();
SqlConvertReq sqlConversionBody = new SqlConvertReq();
sqlConversionBody.setSourceDbType(SqlConvertReq.SourceDbTypeEnum.ORACLE);
sqlConversionBody.setTargetDbType(SqlConvertReq.TargetDbTypeEnum.RDS_FOR_MYSQL);
sqlConversionBody.setTargetDbVersion(SqlConvertReq.TargetDbVersionEnum._5_7);
sqlConversionBody.setSqlStatement("select * from dual;");
sqlConversionRequest.setBody(sqlConversionBody);
RunSqlConversionResponse runSqlConversionResponse = ugoClient.runSqlConversion(sqlConversionRequest);
logger.info(runSqlConversionResponse.toString());
}
private static UgoClient getUgoClient() {
// 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
// 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
String ak = System.getenv("HUAWEICLOUD_SDK_AK");
String sk = System.getenv("HUAWEICLOUD_SDK_SK");
String endpoint = "";
String projectId = "";
// Http Configuration for client
HttpConfig config = HttpConfig.getDefaultHttpConfig();
config.withIgnoreSSLVerification(true);
// Create the authentication
BasicCredentials auth = new BasicCredentials()
.withAk(ak)
.withSk(sk)
.withProjectId(projectId);
// Create UgoClient instance
return UgoClient.newBuilder()
.withHttpConfig(config)
.withCredential(auth)
.withEndpoint(endpoint)
.build();
}
}
```
## 5.返回结果示例
- SQL语句转换(RunSqlConversion)接口的返回值:
```
{
"converted_sql_statement":"select * from dual;",
"is_support_conversion":true
}
```
## 6.参考链接
更多信息请参考[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/sdk?product=ugo)
和数据库和应用迁移 UGO服务文档的[API参考](https://support.huaweicloud.com/api-ugo/ugo_05_0002.html)。
## 修订记录
| 发布日期 | 文档版本 | 修订说明 |
| :--------: | :------: | :----------: |
| 2022-09-22 | 1.0 | 文档首次发布 |