# 迁移业务SQL
#### 业务语法转换迁移
1. 假设Oracle有原业务SQL如下，将其保存成query.sql格式文件。
   
   ```
   -- HAVING子句必须出现在GROUP BY子句后面，而Oracle允许HAVING在GROUP BY子句之前或之后。在目标数据库中，HAVING子句被移至GROUP BY子句之后
   SELECT
   id,
   count(*),
   sum(remain_users) 
   FROM LYC.APEX2_DYNAMIC_ADD_REMAIN_TEST 
   HAVING id <= 5
   GROUP BY id;
   -- UNIQUE关键字迁移为DISTINCT关键字
   SELECT UNIQUE add_users FROM LYC.APEX2_DYNAMIC_ADD_REMAIN_TEST;
   -- “NVL2(表达式,值1,值2)”函数用于根据指定的表达式是否为空来确定查询返回的值。如果表达式不为Null，则NVL2返回“值1”。如果表达式为Null，则NVL2返回“值2”
   SELECT NVL2(add_users, 1, 2) FROM LYC.APEX2_DYNAMIC_ADD_REMAIN_TEST WHERE rownum <= 2;
   ```
   
   
2. 将[1]的query.sql文件放在解压后的DSC文件夹的input目录下。
   
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002738428038.png "点击放大")
   
   
3. 在runDSC.bat当前目录下shift+鼠标右键，选择在此处打开PowerShell窗口，并执行转换。 
   其中**D:\\DSC\\DSC\\input** 、**D:\\DSC\\DSC\\output、D:\\DSC\\DSC\\log** 请替换为实际的DSC路径。
   ```
   .\runDSC.bat --source-db Oracle --input-folder D:\DSC\DSC\input --output-folder D:\DSC\DSC\output --log-folder D:\DSC\DSC\log --application-lang SQL --conversion-type bulk --target-db gaussdbA
   ```
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002768187281.png "点击放大")
   
   
4. 转换完成后，在output路径下生成转换后的DML文件。 
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002738587924.png "点击放大")
   
   
 
#### 迁移后验证
1. 在Oracle中执行迁移前的业务SQL，执行结果如下图。 
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002768067411.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002738428040.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002768187283.png "点击放大")
   
   
2. 在SQL窗口中执行迁移后业务SQL。 
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002738587926.png "点击放大")
   
   
3. 查看执行后的结果如下图。 
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002768067413.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002738428042.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-dws/figure/zh-cn_image_0000002768187285.png "点击放大")
   
   
4. 对比Oracle和DWS业务SQL的执行结果，结果一致，业务迁移完成。
 
