Teradata Perl迁移
概述
本节包含有关Teradata Perl文件迁移过程的详细信息。
请使用migrate.sh或migration.jar工具并设置--application-lang=perl,将Perl文件中的Teradata BTEQ或SQL_LANG脚本迁移到兼容Perl文件的DWS中。迁移Perl文件后,可使用对比工具比较迁移前的输入/源文件和迁移后的目标文件以进行验证。
Perl文件迁移迁移流程如下:
- 完成前提条件中的步骤。
- 创建输入文件夹,并将待迁移Perl文件复制到该文件夹。例如:/migrationfiles/perlfiles
- 执行Perl迁移工具,并将db-script-tag-name指定为BTEQ或SQL_LANG。
- Perl迁移工具从Perl文件中提取BTEQ或SQL_LANG类型脚本。
- Perl迁移工具调用Teradata SQL迁移工具来迁移提取的SQL脚本。有关SQL迁移的详细信息,请参见语法迁移规则。
- 迁移的脚本被嵌入回Perl文件中。
- 在指定的输出文件夹中创建迁移后的Perl文件。如果未指定输出文件夹,则工具会在输入文件夹内创建一个名为converted的输出文件夹,例如:/migrationfiles/perlfiles/converted。
在Linux中执行Perl迁移
要迁移Perl文件,请指定--source-db Teradata和--application-lang Perl参数值执行迁移工具(migrate.sh)。该工具可以迁移BTEQ和/或SQL_LANG脚本。请配置db-script-tag-name参数指定迁移脚本。
执行以下命令开始迁移。用户需指定源数据库、输入和输出文件夹路径、日志路径和应用程序语言:
sh migrate.sh --source-db|-S Teradata --application-lang|-A Perl --input-folder|-I <input-script-path> --output-folder|-O <output-script-path> --migration-type|-M <Bulk or BLogic> [--log-folder|-L <log-path>]
在Windows中执行Perl迁移
要迁移Perl文件,请指定--source-db Teradata和--application-lang Perl参数值执行迁移工具(migrationtool.jar)。该工具可以迁移BTEQ和/或SQL_LANG脚本。请配置•db-script-tag-name参数指定迁移脚本。
执行以下命令开始迁移。用户需指定源数据库、输入和输出文件夹路径、日志路径和应用程序语言:
java -jar migrationtool.jar --source-db|-S Teradata --application-lang|-A Perl --input-folder|-I <input-script-path> --output-folder|-O <output-script-path> --migration-type|-M <Bulk or BLogic> [--log-folder|-L <log-path>]
java -jar migrationtool.jar -I ../executequery/ -O output/ -S teradata -M Bulk -A PERL
迁移详情(包括进度和完成状态)显示在控制台上。
Stage 1/3: Extracting SQL contents from perl files. Extraction completed Stage 2/3: Migrating SQL contents Migration completed Stage 3/3: Merging SQL contents. Merging completed ************************************************************************** Number of Perl files in input directory : 11 Number of Queries failed : 0 Number of SQL files failed : 0 Number of Perl file failures while extracting sql contents : 0 Number of Perl file failures while merging sql contents : 0 Number of Perl directory failures while extracting sql contents : 0 Number of Perl directory failures while merging sql contents : 0 Number of Perl files migrated successfully : 11 ************************************************************************** Log files are available at ./log
以下样例显示命令执行失败时的详情:
Stage 1/3: Extracting SQL contents from perl files. Extraction completed Stage 2/3: Migrating SQL contents Migration completed Stage 3/3: Merging SQL contents. Merging completed ************************************************************************** Number of Perl files in input directory : 11 Number of Queries failed : 0 Number of SQL files failed : 0 Number of Perl file failures while extracting sql contents : 0 Number of Perl file failures while merging sql contents : 1 Number of Perl directory failures while extracting sql contents : 0 Number of Perl directory failures while merging sql contents : 0 ************************************************************************** Log files are available at ./log
有关Perl迁移的配置参数,详情请参见Teradata Perl配置。
有关命令行参数,详情请参见Migrate命令(migrationtool.jar)。

- 迁移工具格式化并迁移输入文件,并将格式化后的文件和迁移后的文件归档在输出文件夹中。如果迁移后您需要比对输入文件和输出文件,可直接比对输出文件夹中的格式化文件和迁移输出文件。
- 确保输入路径中没有空格。如果存在空格,则工具会报错。详情请参见故障处理。
- 日志查看详情请参见日志参考。
- 迁移过程中,如果目标文件夹中存在任何文件或子文件夹,则该工具会在迁移之前删除目标文件夹中所有文件或文件夹,或者根据用户在config文件夹中application.properties文件中的参数设置覆盖现有文件。一旦删除,工具无法恢复这些文件或文件夹。
- Process start time和Process end time分别表示迁移流程的开始和结束时间。Process total time是Migration Tool完成整个流程所用的总时间(以毫秒为单位)。在控制台上还显示已迁移文件的总数、用户配置的处理器数量、使用的处理器数量以及日志文件和错误日志文件的路径。
- 设置perl-migration.properties文件中的--add-timing-on参数添加自定义实现来计算语句执行时间。
Add Timing Option参数的输入、输出举例
输入$V_SQL2 = "SELECT T1.userTypeInd FROM T07_EBM_CAMP T1 WHERE T1.Camp_List_Id = '$abc'"; $STH = $dbh->prepare($V_SQL2); $sth->execute(); @rows = $sth->fetchrow();
输出$V_SQL2 = "SELECT T1.userTypeInd FROM T07_EBM_CAMP T1 WHERE T1.Camp_List_Id = '$abc'"; $STH = $dbh->prepare($V_SQL2); use Time::HiRes qw/gettimeofday/; my $start = [Time::HiRes::gettimeofday()]; $sth->execute(); my $elapsed = Time::HiRes::tv_interval($start); $elapsed = $elapsed * 1000; printf("Time: %.3f ms\n", $elapsed); @rows = $sth->fetchrow();
- --input-folder中指定的文件和文件夹不得具有GROUP和OTHERS的写权限,也就是--input-folder参数指定的文件夹权限不得高于755。出于安全考虑,如果输入文件或文件夹具有写入权限,则该工具不会执行。
- 在并发操作场景下,每次执行的输入路径必须是唯一的。
最佳实践
为进行Perl文件的迁移优化,建议遵循如下标准实践。
- BTEQ脚本应采用以下格式:
print BTEQ <<ENDOFINPUT; TRUNCATE TABLE employee; ENDOFINPUT close(BTEQ);
- SQL_LANG脚本应采用以下格式:
my $sSQL=<<SQL_LANG; TRUNCATE TABLE employee; SQL_LANG
- 注释中应不包括如下内容:
- print BTEQ <<ENDOFINPUT
- ENDOFINPUT
- close(BTEQ)
- my $sSQL=<<SQL_LANG
- SQL_LANG
相关文档
相关产品
