
# 了解DSC
当企业决定从传统数据库切换到华为云DWS数据库时，会遇到数据库迁移的挑战，特别是应用程序SQL脚本的迁移，这通常是一个复杂、高风险且耗时的过程。
如何确保应用程序SQL脚本能够高效、准确地迁移至DWS数据库，同时减少迁移过程中的风险和停机时间？DSC是一款运行在Linux或Windows操作系统上的命令行工具，致力于向客户提供简单、快速、可靠的应用程序SQL脚本迁移服务，通过内置的语法迁移逻辑解析源数据库应用程序sql脚本，并迁移为适用于DWS数据库的应用程序sql脚本。
DSC不需要连接数据库，可在离线模式下实现零停机迁移，迁移过程中还会显示迁移过程状态，并用日志记录操作过程中发生的错误，便于快速定位问题。
![](https://support.huaweicloud.com/tg-dws/public_sys-resources/caution_3.0-zh-cn.png)
DSC内置语法解析器只能识别标准的SQL语法，输入脚本中如包含了其他语言的文本，则会导致语法解析异常，请在使用DSC工具前对输入脚本进行清洗。
#### 迁移对象
DSC支持迁移的数据源如[表1]，支持对数据库中的**表对象**进行语法迁移。
 表1支持的源数据库 
| **数据库名称**            | **数据库版本**                   |
|:---|:---|
| Teradata             | 17.20                       |
| MySQL                | 8.0                         |
| Oracle               | 11g Release 2，12c Release 1 |
| AnalyticDB For MySQL | -                           |
| BigQuery             | -                           |
| Postgres             | 9.2.x，11.x                  |
| Redshift             | -                           |
| Greenplum            | 7.0.0                       |
| Hologres             | 3.1.17                      |
| Netezza              | -                           |
| Hive                 | -                           |
   
#### 迁移流程
DSC迁移sql脚本流程如下：
1. 从源数据库导出待迁移的sql脚本到已安装了DSC的Linux或Windows服务器。
2. 执行DSC命令进行语法迁移，命令中指定输入文件路径、输出文件路径以及日志路径。
3. DSC自动将迁移后的sql脚本和日志信息归档在指定路径中。
图1DSC处理流程   
![](https://support.huaweicloud.com/tg-dws/figure/zh-cn_image_0000001395746796.png "点击放大")
#### 硬件要求
DSC对硬件的要求如[表2]所示。
 表2DSC硬件环境要求 
| **硬件** | **配置**                           |
|:---|:---|
| CPU    | AMD或Intel Pentium （最小频率：500 MHz） |
| 最小内存   | 1 GB                             |
| 磁盘空间   | 1 GB                             |
   
 #### 软件要求
**操作系统要求**
DSC兼容的操作系统如[表3]所示。
 表3兼容的操作系统 
| **服务器**                                                                                                                                                                                                                                                                                              | **操作系统**                                                                                                           | **版本**                |
|:---|:---|:---|
| 通用x86服务器                               | SUSE Linux Enterprise Server 11                                                                                    | SP1（SUSE11.1）         |
| 通用x86服务器                               | SUSE Linux Enterprise Server 11                                                                                    | SP2（SUSE11.2）         |
| 通用x86服务器                               | SUSE Linux Enterprise Server 11                                                                                    | SP3（SUSE11.3）         |
| 通用x86服务器                               | SUSE Linux Enterprise Server 11                                                                                    | SP4（SUSE11.4）         |
| 通用x86服务器                               | SUSE Linux Enterprise Server 12  | SP0（SUSE12.0）         |
| 通用x86服务器                               | SUSE Linux Enterprise Server 12  | SP1（SUSE12.1）         |
| 通用x86服务器                               | SUSE Linux Enterprise Server 12  | SP2（SUSE12.2）         |
| 通用x86服务器                               | SUSE Linux Enterprise Server 12  | SP3（SUSE12.3）         |
| 通用x86服务器                               | RHEL                             | 6.4-x86_64（RedHat6.4） |
| 通用x86服务器                               | RHEL                             | 6.5-x86_64（RedHat6.5） |
| 通用x86服务器                               | RHEL                             | 6.6-x86_64（RedHat6.6） |
| 通用x86服务器                               | RHEL                             | 6.7-x86_64（RedHat6.7） |
| 通用x86服务器                               | RHEL                             | 6.8-x86_64（RedHat6.8） |
| 通用x86服务器                               | RHEL                             | 6.9-x86_64（RedHat6.9） |
| 通用x86服务器                               | RHEL                             | 7.0-x86_64（RedHat7.0） |
| 通用x86服务器                               | RHEL                             | 7.1-x86_64（RedHat7.1） |
| 通用x86服务器                               | RHEL                             | 7.2-x86_64（RedHat7.2） |
| 通用x86服务器                               | RHEL                             | 7.3-x86_64（RedHat7.3） |
| 通用x86服务器                               | RHEL                             | 7.4-x86_64（RedHat7.4） |
| 通用x86服务器                               | CentOS                         | 6.4（CentOS6.4）        |
| 通用x86服务器                               | CentOS                         | 6.5（CentOS6.5）        |
| 通用x86服务器                               | CentOS                         | 6.6（CentOS6.6）        |
| 通用x86服务器                               | CentOS                         | 6.7（CentOS6.7）        |
| 通用x86服务器                               | CentOS                         | 6.8（CentOS6.8）        |
| 通用x86服务器                               | CentOS                         | 6.9（CentOS6.9）        |
| 通用x86服务器                               | CentOS                         | 7.0（CentOS7.0）        |
| 通用x86服务器                               | CentOS                         | 7.1（CentOS7.1）        |
| 通用x86服务器                               | CentOS                         | 7.2（CentOS7.2）        |
| 通用x86服务器                               | CentOS                         | 7.3（CentOS7.3）        |
| 通用x86服务器                               | CentOS                         | 7.4（CentOS7.4）        |
| 通用x86服务器                               | Windows                                                                                                            | 7.0，10，11             |
   
**其他软件要求**
DSC对其他软件版本的要求如[表4]所示。
 表4其他软件要求 
| **软件**                     | **用途**                                 |
|:---|:---|
| JDK 1.8.0_141 or later（必选） | Used to run DSC.                       |
| Perl 5.8.8（可选）             | Used to migrate Perl files.            |
| Perl 5.28.2 and later（可选）  | Used to migrate Perl files in Windows. |
| Python 3.8.2（可选）           | Used to verify post migration script.  |
   
#### 命令行格式约定
本手册中可能出现下列命令行格式约定，它们所代表的含义如下：
表5命令行格式列表 
| **格式**                | **说明**                                                  |
|:---|:---|
| **粗体**                | 命令行关键字（命令中保持不变、必须照输的部分）采用加粗字体表示。                        |
| *斜体*                  | 命令行参数，路径，文件或文件夹采用斜体表示。                                  |
| \[ \]                 | 表示用"\[ \]"括起来的部分（关键词和参数）在命令配置时是可选的。                     |
| { x \| y \| ... }     | 表示用"{}"分组选项，各选项之间以"\|"分隔。从两个或多个选项中选取一个。                 |
| \[ x \| y \| ... \]   | 表示用"\[ \]"分组选项，各选项之间以"\|"分隔。从两个或多个选项中选取一个或者不选。          |
| { x \| y \| ... }\*   | 表示用"{}"分组选项，各选项之间以"\|"分隔。从两个或多个选项中选取多个，最少选取一个，最多选取所有选项。 |
| \[ x \| y \| ... \]\* | 表示用"\[ \]"分组选项，各选项之间以"\|"分隔。从两个或多个选项中选取多个或者不选。          |
| \&\<1-n\>             | 表示\&符号前的内容可重复1到n次。                                      |
| #                     | 表示注释。                                                   |
   
#### 第三方许可
本节包含适用于该工具的第三方许可。
- ANTLR v4.9.3
- Apache Commons IO 2.11
- Apache Commons CLI 1.5
- Apache Log4j 2.17.2
- JSON.org json 20220320
- postgresql 42.4.1
- sql-formatter 2.0.3
 
