更新时间:2024-06-25 GMT+08:00
分享

业务语法转换迁移

  1. 假设Oracle有原业务SQL如下,将其保存成query.sql格式文件。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    -- 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 SHERE rownum <= 2;
    

  2. 1的query.sql文件放在解压后的DSC文件夹的input目录下。

  3. 在runDSC.bat当前目录下shift+鼠标右键,选择在此处打开power shell窗口,并执行转换。

    其中D:\DSC\DSC\inputD:\DSC\DSC\output、D:\DSC\DSC\log请替换为实际的DSC路径。
    1
    .\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
    

  4. 转换完成后,在output路径下生成转换后的DML文件。

相关文档