更新时间:2024-06-29 GMT+08:00

前提条件

执行自定义数据库脚本

执行数据库自定义脚本是为了支持目标数据库某些版本中不存在的关键字。这些脚本在迁移之前需在目标数据库中执行一次。

DSC/scripts目录中的自定义脚本如表1所示。有关如何执行自定义脚本的详细信息,请参见配置自定义数据库脚本

表1 自定义数据库脚本

自定义脚本

说明

mig_fn_get_datatype_short_name.sql

Teradata函数的自定义数据库脚本

mig_fn_castasint.sql

用于迁移CAST AS INTEGER的自定义数据库脚本

vw_td_dbc_tables.sql

用于迁移DBC.TABLES的自定义数据库脚本

vw_td_dbc_indices.sql

用于迁移DBC.INDICES的自定义数据库脚本

按照以下步骤执行自定义数据库脚本:

  1. 通过以下任一方法在要执行迁移的所有目标数据库中执行所需脚本:

    • 使用gsql
      • 使用gsql连接到目标数据库并将SQL文件中的所有内容粘贴到gsql,粘贴的内容将自动执行。

        执行以下命令连接到数据库:

        1
        gsql -h <host_addr_xxx.xxx.xxx.xxx> -d <database_name> -U <user_name> -W <password> -p <port_number> -r
        
      • 使用gsql连接到目标数据库并执行SQL文件。

        执行以下命令连接到数据库并执行SQL文件:

        1
        gsql -h <host_addr_xxx.xxx.xxx.xxx> -d <database_name> -U <user_name>  -W <password>  -p <port_number> -f <filename.sql> -o <output_filename> -L <log_filename.log>  -r
        
    • 使用Data Studio。

      使用Data Studio连接到目标数据库,然后在Data Studio中打开并执行SQL文件。

配置自定义数据库脚本

用户可以使用自定义数据库的SQL脚本从Teradata迁移那些不直接存在于目标数据库的关键字。

迁移之前,这些脚本必须在每个目标数据库中执行一次。

打开发布包中的scripts文件夹,文件目录如表2所示。

SQL文件包含自定义迁移函数。GaussDB (DWS)数据库需要通过这些函数支持Teradata的具体特性。

表2 DSC自定义数据库脚本

文件夹

脚本文件

描述

-- scripts

-

文件夹:所有脚本

------ teradata

-

文件夹:Teradata函数和脚本

-------- view

-

文件夹:配置视图的脚本

-

vw_td_dbc_tables.sql

脚本:启动Teradata中DBC.TABLES的迁移

-

vw_td_dbc_indices.sql

脚本:启动Teradata中DBC.INDICES的迁移

-------- function

-

文件夹:配置Teradata系统函数的脚本

-X

mig_fn_get_datatype_short_name.sql

脚本:启动Teradata中DBC.COLUMNS的迁移

-

mig_fn_castasint.sql

脚本:启动CAST AS INTEGER的迁移

--------db_scripts

-

文件夹:启动Teradata自定义函数的脚本

-

mig_fn_get_datatype_short_name.sql

脚本:启动Teradata中DBC.COLUMNS的迁移

--------core

-

文件夹:Teradata关键脚本

-

teradatacore.pm

脚本:执行Perl迁移的脚本

配置DSC和迁移属性

DSC配置涉及DSC/config目录中的配置文件,请根据表3配置对应的参数。

表3 DSC配置参数

迁移场景

配置文件

配置参数

Teradata SQL迁移

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
deleteToTruncate=True/False
distributeByHash=one/many
extendedGroupByClause=True/False
inToExists=True/False
rowstoreToColumnstore=True/False
session_mode=Teradata/ANSI
tdMigrateDollar=True/False
tdMigrateALIAS=True/False
tdMigrateNULLIFZero=True/False
tdMigrateZEROIFNULL=True/False
volatile=local temporary/unlogged

Teradata Perl迁移

1
2
3
4
5
6
7
8
add-timing-on=True/False
db-bteq-tag-name=bteq
db-tdsql-tag-name=sql_lang
logging-level=error/warning/info
migrate-variables=True/False
remove-intermediate-files=True/False
target_files=overwrite/cancel
migrate-executequery=True/False

MySQL SQL迁移

  • DSC:application.properties
  • MySQL配置features-mysql.properties
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
table.databaseAsSchema=true
table.defaultSchema=public
table.schema=
table.orientation=ROW
table.type=HASH
table.partition-key.choose.strategy=partitionKeyChooserStrategy
table.partition-key.name=
table.compress.mode=NOCOMPRESS
table.compress.level=0
table.compress.row=NO
table.compress.column=LOW
table.database.template=template0
table.index.rename=false
table.database.onlyFullGroupBy=true
table.database.realAsFloat=false