文档首页/ 数据仓库服务 DWS/ 工具指南/ DSC/ 执行DSC进行语法迁移
更新时间:2025-12-03 GMT+08:00
分享

执行DSC进行语法迁移

本章节指导使用DSC进行语法迁移。

注意事项

  • 启动迁移程序前,可以自定义指定输出文件夹路径。输入文件夹路径、输出文件夹路径以及日志路径以空格隔开。默认在工具根目录下。输入文件夹路径不能包含空格。路径空格会导致DSC执行错误。详情请参见故障处理
  • 如果输出文件夹中包含子文件夹或文件,DSC会在执行迁移前将其删除或者根据用户设置(config文件夹中application.properties配置文件)将其覆盖。已删除或覆盖的子文件夹或文件无法通过DSC恢复。
  • 如果在同一台服务器上并发进行迁移(由同一个或不同DSC执行),不同的迁移任务必须使用不同的输出文件夹路径和日志路径。
  • 用户可以通过可选参数指定日志存储路径。如果路径未指定,DSC在TOOL_HOME下自动创建log文件夹。详情请参见DSC日志参考
  • 单条SQL大小约束为20KB,超过此大小可能会导致执行过慢,从而转换失败。
  • 为确保安全性,DSC会对其创建的文件和文件夹进行访问控制。要访问这些文件和文件夹,用户必须拥有所需权限。例如,用户需要权限600/400访问目标文件和日志文件,需要权限700访问目标文件夹和日志文件夹。此外,该工具不在日志中保存敏感数据,以确保数据安全。
  • --input-folder中指定的文件或文件夹不得具有GROUP和OTHERS的写权限。 出于安全考虑,如果输入文件/文件夹具有写入权限,则该工具不会执行。
  • 不得使用拥有root权限的用户在Linux中安装和执行DSC。
  • DSC.jar文件中提供的umask值是系统设置值,与文件权限相关。建议用户不要修改此值。修改此值将影响文件权限。

    DSC是一个单机应用程序,无需与任何网络或数据库连接即可运行。它可以在与任何网络隔离的任何机器上运行。

准备工作

在迁移之前必须先创建输入文件夹和输出文件夹,并将待迁移的所有SQL脚本复制到输入文件夹中。Linux系统操作如下:

  1. 创建输入和输出文件夹。您可以根据用户的首选项在任意位置创建文件夹。用户也可以使用默认的文件夹作为输入、输出,作为包的一部分提供。

    1
    2
    mkdir input
    mkdir output
    

    由于DSC批量无序地读取输出文件夹,因此,建议在迁移开始后不要对输入文件夹和文件进行任何修改,这些异常操作将影响DSC的输出结果。

  2. 将所有待迁移的 SQL文件复制到输入文件夹。

    • 如果源文件的编码格式不是UTF-8,请执行以下步骤:
      1. 打开config文件夹中的application.properties文件。
      2. 将application.properties文件中encodingFormat参数值修改为所需的文件编码格式。

      DSC支持UTF-8、ASCII以及GB2312编码格式。encodingFormat的值不区分大小写。

    • 如果需要获取Linux系统中源文件的编码格式,请在源文件所在服务器上执行以下命令:
      1
      file -bi <Input file name>
      

环境搭建及恢复(数据库及数据库用户)

创建DWS数据库和schema

  1. 登录Postgres系统。

    gsql -p <port> -d postgres 
    drop database <database name>;
    create database <database name>;
    \c <database name>
    GRANT ALL PRIVILEGES ON DATABASE <database name> TO <user>;
    grant database to <user>;\q
    gsql -p <port> -d <database name> -U <user> -W <password> -h <IP> -f
    drop database <database name>;
    create database <database name>;
    \c <database name>;
    GRANT ALL PRIVILEGES ON DATABASE <database name> TO <user>;
    gsql -p <port> -d <database name> -U <user> -W <password>  -f

  2. 运行Setup目录下的所有文件。

命令:

sh runDSC.sh -S oracle -M blogic -I <input path> 
sh runDSC.sh -I input/ -S oracle -M ddl -L log_temp -P input/bulk/1_table/ 

迁移方法

用户可在Windows和Linux操作系统中执行runDSC.shrunDSC.bat命令进行迁移,各迁移场景的命令详见表1,带“[]”内的参数为可选参数。

表1 Windows和Linux场景迁移

迁移场景

命令行参数

Linux场景迁移

1
2
3
4
5
> ./runDSC.sh
 --source-db Teradata
[ --input-folder <input-script-path> ]
[--output-folder <output-script-path> ]
[--log-folder <log-path>]

Windows场景迁移

1
2
3
4
5
> runDSC.bat
--source-db Teradata
[ --input-folder <input-script-path> ]
[--output-folder <output-script-path> ]
[--log-folder <log-path>]
  • 命令行参数说明:
    • 简写

      --source-db 缩写为 -S。

      --input-folder 缩写为 -I。

      --output-folder 缩写为 -O。

      --log-folder 缩写为 -L。

    • source-db指定源数据库,可选值为:

      mysql

      bigquery

      teradata

      greenplum

      netezza

      oracle

      postgres

  • 命令回显说明:

    Migration process start time和Migration process end time分别表示迁移开始时间和结束时间。Total process time表示迁移总时长,单位为ms。此外,迁移文件总数、处理器总数、已使用处理器数量、日志文件路径以及错误日志文件路径也会显示在控制台上。

任务示例

  • 示例:将Teradata数据库的SQL文件迁移到适用于Linux系统下的DWS的SQL脚本中。
    1
    2
    3
    ./runDSC.sh --source-db teradata 
     
    ./runDSC.sh -S teradata 
    
    1
    ./runDSC.sh --source-db teradata --input-folder D:\test\conversion\input --output-folder D:\test\conversion\output  --log-folder D:\test\conversion\log
    
  • 示例:执行以下命令,将Teradata数据库的SQL文件迁移到适用于Windows操作系统下的DWS的SQL脚本中。
    1
    2
    3
    runDSC.bat --source-db teradata 
    
    runDSC.bat -S teradata
    
    1
    runDSC.bat --source-db teradata --input-folder D:\test\conversion\input --output-folder D:\test\conversion\output --log-folder D:\test\conversion\log
    

控制台上显示迁移详情(包括进度和完成状态):

********************** Schema Conversion Started *************************  
DSC process start time : Mon Jan 20 17:24:49 IST 2020  
Statement count progress 100% completed [FILE(1/1)]    
Schema Conversion Progress 100% completed  
**************************************************************************   
Total number of files in input folder : 1  
Total number of valid files in input folder : 1  
**************************************************************************   
Log file path :....../DSC/DSC/log/dsc.log  
Error Log file :    
DSC process end time : Mon Jan 20 17:24:49 IST 2020  
DSC total process time : 0 seconds  
********************* Schema Conversion Completed ************************

查看并验证输出文件

迁移流程结束后,用户可使用对比工具(例如BeyondCompare®)将输入文件与输出文件进行比较。为了简化对比过程,也可以先对源SQL文件进行格式化。

  1. 在Linux操作系统上运行以下命令以查看输出文件夹中的迁移文件。Windows操作系统不再赘述。
    cd OUTPUT
    ls

    显示类似以下信息:

    formattedSource    output
    user1@node79:~/Documentation/DSC/OUTPUT> cd output
    user1@node79:~/Documentation/DSC/OUTPUT/output> ls
    in_index.sql    input.sql    Input_table.sql    in_view.sql    MetadataInput.sql
    user1@node79:~/Documentation/DSC/OUTPUT/output>
  1. 使用对比工具比较输入文件和输出文件,查看迁移后SQL文件的关键字是否符合目标数据库的要求。如果不符合,请联系技术支持处理。

查看日志文件

所有执行及错误信息都会写入对应的日志文件。详情请参见DSC日志参考

检查日志文件是否记录错误信息。如是,请参考故障处理

相关文档