华为云用户手册

  • COLUMN STORE 表的存储方式可使用CREATE TABLE语句中的WITH(ORIENTATION=COLUMN)从ROW-STORE转换为COLUMN存储。可使用rowstoreToColumnstore参数启用/禁用此功能。 输入:CREATE TABLE,修改存储模式为 COLUMN STORE 1 2 3 4 5 6 7 CREATE MULTISET VOLATILE TABLE tab1 ( c1 VARCHAR(30) CHARACTER SET UNICODE , c2 DATE , ... ) PRIMARY INDEX (c1, c2) ON COMMIT PRESERVE ROWS; 输出: 1 2 3 4 5 6 7 CREATE LOCAL TEMPORARY TABLE tab1 ( c1 VARCHAR(30) , c2 DATE , ... ) WITH (ORIENTATION = COLUMN) ON COMMIT PRESERVE ROWS DISTRIBUTE BY HASH (c1, c2); 父主题: 表迁移
  • 创建带索引分区表 如果配置参数tdMigrateRANGE_N为true。 输入: CREATE SET TABLE SC.TAB , NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM=DEFAULT, DEFAULT MERGEBLOCKRATIO ( ACCOUNT_NUM VARCHAR(255) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL ,ACCOUNT_MODIFIER_NUM CHAR(18) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL ,END_DT DATE FORMAT 'YYYY-MM-DD' ,UPD_TXF_BATCHTD INTEGER COMPRESS ) PRIMARY INDEX XPKT0300_AGREEMENT (ACCOUNT_NUM,ACCOUNT_MODIFIER_NUM) PARTITION BY RANGE_N(END_DT BETWEEN '2001-01-01' AND '2020-12-31' EACH INTERVAL '1' DAY, NO RANGE ,UNKNOWN) INDEX (UPD_TXF_BATCHTD) ; 输出: CREATE TABLE SC.TAB ( ACCOUNT_NUM VARCHAR( 255 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ NOT NULL ,ACCOUNT_MODIFIER_NUM CHAR( 18 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ NOT NULL ,END_DT DATE ,UPD_TXF_BATCHTD INTEGER /* COMPRESS */ ) DISTRIBUTE BY HASH ( ACCOUNT_NUM ,ACCOUNT_MODIFIER_NUM ) PARTITION BY RANGE (END_DT) ( PARTITION TAB_1 start ('2001-01-01') END ('2020-12-31') EVERY ( INTERVAL '1' DAY ) ) ; CREATE INDEX ON SC.TAB (UPD_TXF_BATCHTD) LOCAL;
  • TITLE和CREATE VIEW 输入: REPLACE VIEW ${STG_VIEW}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} AS LOCK TABLE ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} FOR AC CES S SELECT AUM_DATE (TITLE ' ') ,CLNTCODE (TITLE ' ') ,ACCTYPE (TITLE ' ') ,CCY (TITLE ' ') ,BAL_AMT (TITLE ' ') ,MON_BAL_AMT (TITLE ' ') ,HK_CLNTCODE (TITLE ' ') ,MNT_DATE (TITLE ' ') FROM ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC}; it should be migrated as below: CREATE OR REPLACE VIEW ${STG_VIEW}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} AS /*LOCK TABLE ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} FOR ACCESS */ SELECT AUM_DATE /* (TITLE ' ') */ ,CLNTCODE /* (TITLE ' ') */ ,ACCTYPE /* (TITLE ' ') */ ,CCY /* (TITLE ' ') */ ,BAL_AMT /* (TITLE ' ') */ ,MON_BAL_AMT /* (TITLE ' ') */ ,HK_CLNTCODE /* (TITLE ' ') */ ,MNT_DATE /* (TITLE ' ') */ FROM ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC}; 输出: CREATE OR REPLACE VIEW ${STG_VIEW}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} AS /*LOCK TABLE ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} FOR ACCESS */ SELECT AUM_DATE /* (TITLE ' ') */ ,CLNTCODE /* (TITLE ' ') */ ,ACCTYPE /* (TITLE ' ') */ ,CCY /* (TITLE ' ') */ ,BAL_AMT /* (TITLE ' ') */ ,MON_BAL_AMT /* (TITLE ' ') */ ,HK_CLNTCODE /* (TITLE ' ') */ ,MNT_DATE /* (TITLE ' ') */ FROM ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC};
  • SET SET是Teradata的独有功能。它不允许重复的记录。它使用MINUS集合操作符来实现。DSC支持MULTISET和SET表。SET表支持与VOLATILE一起使用。 输入:SET TABLE 1 2 3 4 5 CREATE SET VOLATILE TABLE tab1 … ; INSERT INTO tab1 SELECT expr1, expr2, … FROM tab1, … WHERE ….; 输出: 1 2 3 4 5 6 7 CREATE LOCAL TEMPORARY TABLE tab1 … ; INSERT INTO tab1 SELECT expr1, expr2, … FROM tab1, … WHERE …. MINUS SELECT * FROM tab1 ; 父主题: 表迁移
  • CHARACTER SET和CASESPECIFIC CHARACTER SET用于指定字符列的服务器字符集,CASESPECIFIC用于指定字符数据比较及排序时的大小写情况。 可以使用tdMigrateCharsetCase参数来配置是否迁移CHARACTER SET和CASESPECIFIC。如果该参数设为false,则工具将跳过该查询的迁移并记录消息。 输入:tdMigrateCharsetCase=True 1 2 3 4 5 6 7 8 CREATE MULTISET VOLATILE TABLE TAB1 ( col1 INTEGER NOT NULL ,col2 INTEGER NOT NULL ,col3 VARCHAR(100) NOT NULL CHARACTER SET UNICODE CASESPECIFIC ) PRIMARY INDEX (col1,col2) ON COMMIT PRESERVE ROWS ; 输出: 1 2 3 4 5 6 7 8 9 10 CREATE LOCAL TEMPORARY TABLE TMP_RATING_SYS_PARA ( col1 INTEGER NOT NULL ,col2 INTEGER NOT NULL ,col3 VARCHAR(100) NOT NULL /* CHARACTER SET UNICODE CASESPECIFIC */) ) ON COMMIT PRESERVE ROWS DISTRIBUTE BY HASH (col1,col2) ; 输入:迁移支持的字符数据类型 在Teradata中,以下字符集支持以字符个数来衡量字符串数据类型的长度: LATIN UNICODE GRAPHIC 不过,KANJISJIS字符集支持以字节个数来衡量字符串数据类型的长度。 以COLUMN_NAME VARCHAR(100) CHARACTER SET UNICODE CASESPECIFIC COLUMN_NAME VARCHAR(100) CHARACTER SET LATIN CASESPECIFIC为例,字符串最大支持100个字符(而不是字节)。 在 GaussDB (DWS)中,字符串数据类型长度通过字节(而不是字符)来衡量。 VARCHAR(100)和VARCHAR2(100)最多支持100个字节(而不是字符)。 但是NVARCHAR2(100)最大可支持100个字符。 因此,如果Teradata使用LATIN、UNICODE或GRAPHIC字符集,VARCHAR应迁移为NVARCHAR。 1 2 3 4 5 CREATE TABLE tab1 ( col1 VARCHAR(10), COL2 CHAR(1) ); 输出: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 a)when default_charset = UNICODE/GRAPHIC CREATE TABLE tab1 ( col1 NVARCHAR2 (10) ,COL2 NVARCHAR2 (1) ) ; b)when default_charset = LATIN CREATE TABLE tab1 ( col1 VARCHAR2 (10) ,COL2 VARCHAR2 (1) ) ; 输入: 1 2 3 4 5 CREATE TABLE tab1 ( col1 VARCHAR(10) CHARACTER SET UNICODE, COL2 CHAR(1) ); 输出: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 a) when default_charset = UNICODE/GRAPHIC CREATE TABLE tab1 ( col1 NVARCHAR2 (10) /* CHARACTER SET UNICODE*/ ,COL2 NVARCHAR2( 1 ) ) ; b) when default_charset = LATIN CREATE TABLE tab1 ( col1 NVARCHAR2 (10) /* CHARACTER SET UNICODE*/ ,COL2 CHAR(1) ) ; 父主题: 表迁移
  • FORMAT和CAST Teradata中,关键词FORMAT用于格式化列或表达式。例如,LPAD中FORMAT '9(n)'和'z(n)'分别用'0'和空格(' ')表示。 数据类型转换可使用CAST或直接数据类型([like (expression1)(CHAR(n))])进行。该功能使用CAST实现。详情参见类型转换和格式化。 输入:FORMAT和CAST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SELECT CAST(TRIM( Agt_Num ) AS DECIMAL( 5 ,0 ) FORMAT '9(5)' ) FROM C03_AGENT_BOND ; SELECT CAST(CAST( Agt_Num AS INT FORMAT 'Z(17)' ) AS CHAR( 5 ) ) FROM C03_AGENT_BOND ; SELECT CHAR(CAST( CAST( CND_VLU AS DECIMAL( 17 ,0 ) FORMAT 'Z(17)' ) AS VARCHAR( 17 ) ) ) FROM C03_AGENT_BOND ; 输出: SELECT LPAD( CAST( TRIM( Agt_Num ) AS DECIMAL( 5 ,0 ) ) ,5 ,'0' ) AS Agt_Num FROM C03_AGENT_BOND ; SELECT CAST(CAST( Agt_Num AS INT FORMAT 'Z(17)' ) AS CHAR( 5 ) ) FROM C03_AGENT_BOND ; SELECT LENGTH( CAST( LPAD( CAST( CND_VLU AS DECIMAL( 17 ,0 ) ) ,17 ,' ' ) AS VARCHAR( 17 ) ) ) AS CND_VLU FROM C03_AGENT_BOND ; 输入:FORMAT 'Z(n)9' 1 2 3 4 5 6 SELECT standard_price (FORMAT 'Z(5)9') (CHAR( 6 )) ,max_price (FORMAT 'ZZZZZ9') (CHAR( 6 )) FROM product_t ; 输出: 1 2 3 4 5 6 SELECT CAST( TO_CHAR( standard_price ,'999990' ) AS CHAR( 6 ) ) AS standard_price ,CAST( TO_CHAR( max_price ,'999990' ) AS CHAR( 6 ) ) AS max_price FROM product_t ; 输入:FORMAT 'z(m)9.9(n)' 1 2 3 4 5 SELECT standard_price (FORMAT 'Z(6)9.9(2)') (CHAR( 6 )) FROM product_t ; 输出: 1 2 3 4 5 SELECT CAST( TO_CHAR( standard_price ,'9999990.00' ) AS CHAR( 6 ) ) AS standard_price FROM product_t ; 输入:CAST AS INTEGER 1 2 3 4 5 SELECT CAST( standard_price AS INTEGER ) FROM product_t ; 输出: 1 2 3 4 5 SELECT (standard_price) FROM product_t ; 输入:CAST AS INTEGER FORMAT 1 2 3 4 5 6 7 SELECT CAST( price11 AS INTEGER FORMAT 'Z(4)9' ) ( CHAR( 10 ) ) FROM product_t ; 输出: 1 2 3 4 5 SELECT CAST( TO_CHAR( ( price11 ) ,'99990' ) AS CHAR( 10 ) ) AS price11 FROM product_t ; 新增以下GaussDB(DWS)函数来转换为INTEGER: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE OR REPLACE FUNCTION /* This function is used to support "CAST AS INTEGER" of Teradata. It should be created in the "mig_td_ext" schema. */ ( i_param TEXT ) RETURN INTEGER AS v_castasint INTEGER; BEGIN v_castasint := CASE WHEN i_param IS NULL THEN NULL -- if NULL value is provided as input WHEN TRIM(i_param) IS NULL THEN 0 -- if empty string with one or more spaces is provided ELSE TRUNC(CAST(i_param AS NUMBER)) -- if any numeric value is provided END; RETURN v_castasint; END; 父主题: 函数和操作符
  • 表操作符 可以在查询的FROM子句中调用函数,该函数包含在表操作符内部。 输入:表操作符,使用RETURNS 1 2 SELECT * FROM TABLE( sales_retrieve (9005) RETURNS ( store INTEGER, item CLOB, quantity BYTEINT) ) AS ret; 输出: 1 2 SELECT * FROM sales_retrieve(9005) AS ret (store, item, quantity); 父主题: 函数和操作符
  • LIKE ALL/NOT LIKE ALL 输入:LIKE ALL/NOT LIKE ALL 1 2 3 SELECT c1, c2 FROM tab1 WHERE c3 NOT LIKE ALL ('%STR1%', '%STR2%', '%STR3%'); 输出: 1 2 3 SELECT c1, c2 FROM tab1 WHERE c3 NOT LIKE ALL (ARRAY[ '%STR1%', '%STR2%', '%STR3%' ]);
  • LIKE ANY/NOT LIKE ANY 输入:LIKE ANY/NOT LIKE ANY 1 2 3 SELECT c1, c2 FROM tab1 WHERE c3 LIKE ANY ('STR1%', 'STR2%', 'STR3%'); 输出: 1 2 3 SELECT c1, c2 FROM tab1 WHERE c3 LIKE ANY (ARRAY[ 'STR1%', 'STR2%', 'STR3%' ]);
  • 声明Hexadecimal Binary Literal值 输入: CREATE MULTISET TABLE bvalues (IDVal INTEGER, CodeVal BYTE(2)); INSERT INTO bvalues VALUES (112193, '7879'XB) ; SELECT IDVal, CodeVal FROM bvalues WHERE CodeVal = '7879'XB ; 输出:
  • 声明Hexadecimal Character Literal值 输入: SELECT (COALESCE(TRIM(BOTH FROM VTX_D_RPT_0017_WMSE12_01_01.ID),'')) ||'7E'xc||(COALESCE(TRIM(BOTH FROM VTX_D_RPT_0017_WMSE12_01_01.Code),'')) ||'7E'xc||(COALESCE(TRIM(BOTH FROM VTX_D_RPT_0017_WMSE12_01_01.Description),'')) ||'7E'xc||(COALESCE(TRIM(BOTH FROM VTX_D_RPT_0017_WMSE12_01_01.Name),'')) ||'7E'xc||(COALESCE(TRIM(BOTH FROM VTX_D_RPT_0017_WMSE12_01_01.Host_Product_Id),'')) FROM DP_VTXEDW.VTX_D_RPT_0017_WMSE12_01_01 VTX_D_RPT_0017_WMSE12_01_01 WHERE 1=1 ; 输出:
  • Teradata 如果含有FORMAT参数的case语句未用半角括号“()”括起来,该语句不会处理。 例如: 1 case when column1='0' then column1='value' end (FORMAT 'YYYYMMDD')as alias1 在该示例中,case when column1='0' then column1='value' end未用半角括号括起,因此不会处理该语句。
  • 成功读 在DSC读取文件之后,该文件将被记录日志以进行跟踪。在某些情况下,用户可通过这些日志获取文件执行状态的信息。该文件位于log文件夹中。日志文件包括日期、时间、文件名等详细信息。此日志文件的日志记录级别为INFO。 successRead.log的文件结构如下: 2017-07-21 14:13:00,461 INFO readlogger:213 /home/testmigration/Documentation/is not in.sql is read successfully. 2017-07-21 14:13:00,957 INFO readlogger:213 /home/testmigration/Documentation/date quotes.sql is read successfully. 2017-07-21 14:13:01,509 INFO readlogger:213 /home/testmigration/Documentation/column alias replace.sql is read successfully. 2017-07-21 14:13:02,034 INFO readlogger:213 /home/testmigration/Documentation/sampleRownum.sql is read successfully. 2017-07-21 14:13:02,578 INFO readlogger:213 /home/testmigration/Documentation/samp.sql is read successfully. 2017-07-21 14:13:03,145 INFO readlogger:213 /home/testmigration/Documentation/2.6BuildInputs/testWithNodataSamples.sql is read successfully.
  • 成功写 DSC读取、处理文件并将输出写入磁盘。这个过程被记录到成功写日志文件中。在某些情况下,用户可通过此文件了解哪些文件已处理成功。在重新运行的情况下,用户可以跳过这些文件运行剩余的文件。该文件位于log文件夹中。日志文件包括日期、时间、文件名等详细信息。此日志文件的日志记录级别为INFO。 successWrite.log的文件结构如下: 2017-07-21 14:13:00,616 INFO writelogger:595 /home/testmigration/Documentation/is not in.sql has written successfully. 2017-07-21 14:13:01,055 INFO writelogger:595 /home/testmigration/Documentation/date quotes.sql has written successfully. 2017-07-21 14:13:01,569 INFO writelogger:595 /home/testmigration/Documentation/column alias replace.sql has written successfully. 2017-07-21 14:13:02,055 INFO writelogger:595 /home/testmigration/Documentation/sampleRownum.sql has written successfully. 2017-07-21 14:13:02,597 INFO writelogger:595 /home/testmigration/Documentation/samp.sql has written successfully. 2017-07-21 14:13:03,178 INFO writelogger:595 /home/testmigration/Documentation/testWithNodataSamples.sql has written successfully.
  • 错误日志 DSC仅将迁移过程中发生的错误记录到DSCError.log文件中。该文件位于log文件夹中。DSCError.log文件包含这些错误的日期、时间,文件详细信息(如文件名),以及查询位置等信息。错误日志的记录级别为ERROR。 DSCError.log的文件结构如下: 2017-06-29 14:07:39,585 ERROR TeradataBulkHandler:172 Error occurred during processing of input in Bulk Migration. PreQueryValidation failed in not proper termination or exclude keyword. /home/testmigration/Documentation/Input/c005.sql for Query in position : 4 2017-06-29 14:07:39,962 ERROR TeradataBulkHandler:172 Error occurred during processing of input in Bulk Migration. PreQueryValidation failed in not proper termination or exclude keyword. /home/testmigration/Documentation/Input/c013.sql for Query in position : 11 2017-06-29 14:07:40,136 ERROR QueryConversionUtility:250 Query is not converted as it contains unsupported keyword: join select 2017-06-29 14:07:40,136 ERROR TeradataBulkHandler:172 Error occurred during processing of input in Bulk Migration. PreQueryValidation failed in not proper termination or exclude keyword. /home/testmigration/Documentation/Input/sample.sql for Query in position : 1 2017-06-29 14:07:40,136 ERROR TeradataBulkHandler:172 Error occurred during processing of input in Bulk Migration. PreQueryValidation failed in not proper termination or exclude keyword. /home/testmigration/Documentation/Input/sample.sql for Query in position : 3
  • 活动日志 DSC将所有日志和错误信息保存到DSC.log文件中。该文件位于log文件夹中。DSC.log文件包含执行迁移的用户、迁移的文件、时间戳等详细信息。活动日志的记录级别为INFO。 DSC.log的文件结构如下: 2020-01-22 09:35:10,769 INFO CLMigrationUtility:159 DSC is initiated by xxxxx 2020-01-22 09:35:10,828 INFO CLMigrationUtility:456 Successfully changed permission of files in D:\Migration\Gauss_Tools_18_Migration\code\migration\config 2020-01-22 09:35:10,832 INFO PropertyLoader:90 Successfully loaded Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\application.properties 2020-01-22 09:35:10,833 INFO ApplicationPropertyLoader:42 Application properties have been loaded Successfully 2020-01-22 09:35:10,917 INFO MigrationValidatorService:549 Files in output directory has been overwritten as configured by xxxxx 2020-01-22 09:35:10,920 INFO PropertyLoader:90 Successfully loaded Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\features-oracle.properties 2020-01-22 09:35:10,921 INFO FeatureLoader:41 Features have been loaded Successfully 2020-01-22 09:35:10,926 INFO MigrationService:80 DSC process start time : Wed Jan 22 09:35:10 GMT+05:30 2020 2020-01-22 09:35:10,933 INFO FileHandler:179 File is not supported. D:\Migration_Output\Source\ARRYTYPE.sql- 2020-01-22 09:35:10,934 INFO FileHandler:179 File is not supported. D:\Migration_Output\Source\varray.sql- 2020-01-22 09:35:12,816 INFO PropertyLoader:90 Successfully loaded Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\global-temp-tables.properties 2020-01-22 09:35:12,830 INFO PropertyLoader:90 Successfully loaded Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\create-types-UDT.properties 2020-01-22 09:35:12,834 INFO PropertyLoader:90 Successfully loaded Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\package-names-oracle.properties 2020-01-22 09:35:12,849 INFO DBMigrationService:76 Number of Available Processors: 4 2020-01-22 09:35:12,850 INFO DBMigrationService:78 Configured simultaneous processes in the Tool : 3 2020-01-22 09:35:13,032 INFO MigrationProcessor:94 File name: D:\Migration_Output\Source\Input.sql is started 2020-01-22 09:35:13,270 INFO FileHandler:606 guessencoding command output = Error: Unable to access jarfile D:\Migration\Gauss_Tools_18_Migration\code\migration\RE_migration\target\dsctool.jar , for file= D:\Migration_Output\Source\Input.sql 2020-01-22 09:35:13,272 INFO FileHandler:625 couldn't get the encoding format, so using the default charset for D:\Migration_Output\Source\Input.sql 2020-01-22 09:35:13,272 INFO FileHandler:310 File D:\Migration_Output\Source\Input.sql will be read with charset : UTF-8 2020-01-22 09:35:13,390 INFO FileHandler:668 D:\Migration_Output\target\output\Input.sql - File already exists/Failed to create target file 2020-01-22 09:35:13,562 INFO FileHandler:606 guessencoding command output = Error: Unable to access jarfile D:\Migration\Gauss_Tools_18_Migration\code\migration\RE_migration\target\dsctool.jar , for file= D:\Migration_Output\Source\Input.sql 2020-01-22 09:35:13,563 INFO FileHandler:625 couldn't get the encoding format, so using the default charset for D:\Migration_Output\Source\Input.sql 2020-01-22 09:35:13,563 INFO FileHandler:675 File D:\Migration_Output\Source\Input.sql will be written with charset : UTF-8 2020-01-22 09:35:13,604 INFO MigrationProcessor:139 File name: D:\Migration_Output\Source\Input.sql is processed successfully 2020-01-22 09:35:13,605 INFO MigrationService:147 Total number of files in Input folder : 3 2020-01-22 09:35:13,605 INFO MigrationService:148 Total number of queries : 1 22020-01-22 09:35:13,607 INFO PropertyLoader:164 Successfully updated Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\global-temp-tables.properties 2020-01-22 09:35:13,630 INFO PropertyLoader:164 Successfully updated Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\create-types-UDT.properties 2020-01-22 09:35:13,631 INFO PropertyLoader:164 Successfully updated Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\package-names-oracle.properties 2020-01-22 09:35:13,632 INFO CLMigrationUtility:305 Log file : dsc.log and the file is present in the path : D:\Migration_Output\log 2020-01-22 09:35:13,632 INFO CLMigrationUtility:312 DSC process end time : Wed Jan 22 09:35:13 GMT+05:30 2020 2020-01-22 09:35:13,632 INFO CLMigrationUtility:217 Total process time : 2842 seconds
  • 命令示例 ./runDSC.sh --source-db Teradata --input-folder opt/DSC/DSC/input/oracle/ --output-folder /opt/DSC/DSC/output/ --log-folder /opt/DSC/DSC/log/ --application-lang SQL --conversion-type ddl --targetdb gaussdbA
  • 系统回显 ********************** 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 ************************************************************************** Log file path :....../DSC/DSC/log/dsc.log DSC process end time : Mon Jan 20 17:24:49 IST 2020 DSC total process time : 0 seconds ********************* Schema Conversion Completed ************************ 如果输入文件夹中没有SQL文件,则在控制台上会显示如下消息:
  • 参数说明 表1 参数列表 全称 缩写 数据类型 说明 范围 默认值 示例 --source-db -S 字符串 源数据库。 Teradata MySQL N/A --source-db Teradata(or) -S Teradata --input-folder -I 字符串 包含Teradata脚本的输入文件夹。 不适用 不适用 --input-folder /home/testmigration/Documentation/input (or) -I /home/testmigration/Documentation/input --output-folder -O 字符串 保持迁移后脚本的输出文件夹。 不适用 不适用 --output-folder /home/testmigration/Documentation/output(or)-O /home/testmigration/Documentation/output --application-lang -A 字符串 用于迁移的应用程序语言解析器。 SQL:迁移SQL文件中的SQL模式/脚本。 Perl:迁移Perl文件中的BTEQ/SQL_LANG脚本。 SQL Perl SQL --application-lang Perl 或 -A Perl --conversion-type -M 字符串 迁移类型。用户需根据输入脚本指定该参数: Bulk:迁移DML和DDL脚本。 BLogic:迁移业务逻辑,如过程和函数。 BLogic仅适用于Oracle PL/SQL。 Bulk BLogic Bulk --conversion-type ddl 或 -M ddl --log-folder -L 字符串 日志文件路径。 不适用 不适用 --log-folder /home/testmigration/Documentation(or)-L /home/testmigration/Documentation --version-number -VN 字符串 Oracle必选参数 Oracle 不适用 --version-number 或 -V1R8_330 --target-db -T 字符串 目标数据库 gaussdbA gaussdbA --target-db gaussdbA (或) -T gaussdbA
  • 任务示例 示例:将Teradata数据库的SQL文件迁移到适用于Linux系统下的GaussDB(DWS)的SQL脚本中。 1 ./runDSC.sh --source-db Teradata --input-folder D:\test\conversion\input --output-folder D:\test\conversion\output --log-folder D:\test\conversion\log --conversion-type ddl --targetdb gaussdb 示例:执行以下命令,将Teradata数据库的SQL文件迁移到适用于Windows操作系统下的GaussDB(DWS)的SQL脚本中。 1 runDSC.bat --source-db Teradata --input-folder D:\test\conversion\input --output-folder D:\test\conversion\output --log-folder D:\test\conversion\log --conversion-type ddl --targetdb gaussdb 控制台上显示迁移详情(包括进度和完成状态): ********************** 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 ************************
  • 配置DSC和迁移属性 DSC配置涉及DSC/config目录中的配置文件,请根据表3配置对应的参数。 表3 DSC配置参数 迁移场景 配置文件 配置参数 Teradata SQL迁移 DSC:application.properties Teradata SQL配置:features-teradata.properties 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迁移 DSC:application.properties Teradata Perl配置:perl-migration.properties 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
  • 配置自定义数据库脚本 用户可以使用自定义数据库的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/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的自定义数据库脚本
  • MySQL配置 设置MySQL配置参数可在迁移MySQL数据库脚本时自定义迁移工具的行为。 打开config文件夹中的features-mysql.properties文件,并根据实际需要设置features-mysql.properties文件中的配置参数中的参数。 表1 features-mysql.properties文件中的配置参数 参数 说明 取值范围 默认值 样例 table.databaseAsSchema table.defaultSchema 是否使用数据库名称作为schema名称,如果数据库名称不存在,则使用用户定义schema, 如果用户定义schema为空,则使用默认schema。 true false public true public table.databaseAsSchema=true table.defaultSchema=public table.schema 用户设置的schema名称,如果该参数不为空,则使用该参数,即使包含useDatabaseAsSchema = true,也会使用当前schema名称。 schemaName 默认为空 table.schema= table.orientation 默认数据存储方式,ROW:行存储,COLUMN:列存储。 ROW COLUMN ROW table.orientation=ROW table.type 默认的表类型,分区表、复制表、round-robin表。 REPLICATION、HASH、ROUND-ROBIN。 HASH REPLICATION ROUND-ROBIN HASH table.type=HASH table.tablespace 表空间选项。 COMMENT RESERVE RESERVE table.tablespace=RESERVE table.partition-key.choose.strategy 分区键选择策略。 partitionKeyChooserStrategy partitionKeyChooserStrategy table.partition-key.choose.strategy=partitionKeyChooserStrategy table.partition-key.name 分区键设置,如果为空,则按照默认策略选择,如果有多列,用逗号分隔,忽略列名称大小写。 预留参数 默认为空 table.partition-key.name= table.compress.mode 创建新表时,需要在CREATE TABLE语句中指定关键字COMPRESS,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字NOCOMPRESS则不对表进行压缩。 COMPRESS NOCOMPRESS NOCOMPRESS table.compress.mode=NOCOMPRESS table.compress.row table.compress.column 指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。 YES NO YES NO LOW MIDDLE HIGH NO LOW table.compress.row=NO table.compress.column=LOW table.compress.level 指定表数据同一压缩级别下的不同压缩水平,它决定了同一压缩级别下表数据的压缩比以及压缩时间。对同一压缩级别进行了更加详细的划分,为用户选择压缩比和压缩时间提供了更多的空间。总体来讲,此值越大,表示同一压缩级别下压缩比越大,压缩时间越长;反之亦然。 0 1 2 3 0 table.compress.level=0 table.database.template 数据库模板。 预留参数 template0 table.database.template=template0 table.database.encoding A database code. UTF8 SQL_ASCII GBK Latin1 codes UTF8 table.database.encoding=UTF8 table.index.rename 创建索引时,是否重新命名索引名。 true false false table.index.rename=false table.database.onlyFullGroupBy select后非聚合列是否全部出现在group by中。 true false true table.database.onlyFullGroupBy=true table.database.realAsFloat REAL数据类型转换使用,默认false,转换为DOUBLE PRECISION;改为true时,转换为REAL。 true false false table.database.realAsFloat=false 父主题: 配置DSC
  • Teradata SQL配置 设置Teradata配置参数可在迁移Teradata数据库脚本时自定义迁移工具的行为。 打开config文件夹中的features-teradata.properties文件,并根据实际需要设置表1中的参数。 表1 features-teradata.properties文件中的配置参数 参数 说明 取值范围 默认值 样例 deleteToTruncate 该参数用于设置不含WHERE的DELETE语句迁移规则。 若该参数设为true,则可将DELETE迁移为TRUNCATE。若该参数设为false,则不可将DELETE迁移为TRUNCATE。 true false false deleteToTruncate=true distributeByHash 基于主索引中指定的字段,将数据分布在集群多个节点上。 若该参数设为one,表示数据基于主索引的首个字段分布。 若该参数设为many,表示数据基于所有主索引字段分布。 该功能通过指定DISTRIBUTE BY子句实现。 说明: 该参数在V100R002C60版本中设置为one,因为该版本不支持在DISTRIBUTE BY子句中指定多个字段。 one many many distributeByHash =many extendedGroupByClause 该参数用于启用和禁用Group By(grouping sets/cube/rollup)迁移。 若该参数设为true,则可迁移GROUP BY()。 若该参数设为false,则不可迁移GROUP BY()。 true false false extendedGroupByClause=false inToExists 该参数可用于启用和禁用从IN/NOT IN到EXISTS/NOT EXISTS的查询优化。 true false false inToExists=false rowstoreToColumnstore 该参数将rowstore(行存)表转换为COLUMN(列存)表。 如果该参数设为true,则所有rowstore表脚本迁移时会转换为columnstore表。 true false false rowstoreToColumnstore=false session_mode 该参数用于在运行CREATE TABLE时设置默认表类型(SET/MULTISET)。 若该参数设为Teradata,则默认表类型会配置为SET。 若该参数设为ANSI,则默认表类型会配置为MULTISET。 Teradata ANSI Teradata session_mode=ANSI tdMigrateALIAS 该参数用于启用/禁用ALIAS迁移。 若该参数设为true,则迁移ALIAS。 若该参数设为false,则不迁移ALIAS。 true false false tdMigrateALIAS=true tdMigrateDOLLAR 该参数用于设置迁移工具行为,从而迁移名称以$(美元符号)开头的静态对象。该参数不适用于动态对象,这些对象的名称使用${}格式。 若该参数设为true,则使用英文双引号(")将以$开头的对象名称括起来。 若该参数设为false,则直接迁移以$开头的对象。 说明: 详情请参见以$开头的对象名称。 true false true tdMigrateDOLLAR=true tdMigrateLOCKoption 该参数是否迁移包含LOCK关键字的查询。 true表示在迁移此类查询时注释掉LOCK功能(LOCK到ACCESS)。 false表示不迁移此类查询。工具会跳过此查询,并记录以下消息: Gauss does not have equivalent syntax for LOCK option in CREATE VIEW and INSERT statement. Please enable the config_param tdMigrateLockOption to comment the LOCK syntax in the statement. 说明: 详情请参见ACCESS LOCK。 true false false tdMigrateLOCKoption=true tdMigrateNULLIFZERO 该参数指定是否迁移NULLIFZERO()。 若该参数设为true,则迁移NULLIFZERO()。 若该参数设为false,则不迁移NULLIFZERO()。 true false true tdMigrateNullIFZero=true tdMigrateVIEWCHECKOPTION 该参数指定是否迁移包含CHECK OPTION的视图。 若该参数设为true,则迁移时注释掉此类视图。 若该参数设为false,则不迁移此类视图。工具将按原样复制此查询并记录以下消息: Gauss does not support WITH CHECK OPTION in CREATE VIEW. Please enable the config_param tdMigrateViewCheckOption to comment the WITH CHECK OPTION syntax in the statement. true false false tdMigrateVIEWCHECKOPTION=true tdMigrateZEROIFNULL 该参数指定是否迁移ZEROIFNULL。 若该参数设为true,则迁移ZEROIFNULL()。 若该参数设为false,则不迁移ZEROIFNULL()。 true false true tdMigrateZEROIFNULL=true volatile 特定会话的volatile数据和表仅存储在该会话中。会话结束后,其数据和表会删除。 volatile表可以是表迁移表或unlogged表。 说明: V100R002C60仅支持unlogged表选项,不支持local temporary表。 local temporary unlogged local temporary volatile=unlogged tdMigrateCharsetCase 该参数指定是否迁移CHARACTER SET和CASESPECIFIC。 若该参数设为true,则迁移CHARACTER SET和CASESPECIFIC为注释掉的脚本。 若该参数设为false,则不迁移CHARACTER SET和CASESPECIFIC。工具按原样复制查询,并在错误日志文件中记录以下消息,包括查询细节(如文件名和语句位置): CHARACTER SET和CASESPECIFIC是列级选项,Gauss不提供等效语法。 用户可以改写相应语句,或将tdMigrateCharsetCase参数设为true,从而注释掉CHARACTER SET和CASESPECIFIC。 true false false tdMigrateCharsetCase=false 说明: 如果tdminatecharsetcase = true,则注释该字符的特殊关键字。 terdataUtilities 是否支持迁移Teradata命令行工具。 支持以下参数值: true false true false true terdataUtilities=true unique_primary_index_in_column_table 是否支持为列存表创建unique索引。 true false true unique_primary_index_in_column_table=true default_charset 是否支持迁移default_charset。 支持以下参数值: LATIN UNICODE GRAPHIC LATIN UNICODE GRAPHIC LATIN default_charset=LATIN mergeImplementation 指定merge类型: 使用WITH子句 拆分查询 支持以下参数值: With Split None With Split None None mergeImplementation=None dsqlSupport 是否支持dsql。 支持以下参数值: true false true false false dsqlSupport=false tdcolumnInSensitive 是否在迁移时删除包含双引号的列名称。 支持以下参数值: true false true false false tdcolumnInSensitive=false tdMigrateCASE_N 指定分区关键字CASE_N的迁移方式。Gauss不支持多级(嵌套)分区。 支持以下参数值: comment none comment none comment tdMigrateCASE_N=comment tdMigrateRANGE_N 指定分区关键字RANGE_N的迁移方式。Gauss不支持多级(嵌套)分区。 支持以下参数值: comment none range comment none range range tdMigrateRANGE_N=range tdMigrateAddMonth 是否支持迁移addMonth。 支持以下参数值: true false 若该参数设为true,则迁移后为mig_td_ext.ADD_MONTHS(添加mig_td_ext)。否则,不支持迁移。 true false false tdMigrateAddMonth=false 父主题: 配置DSC
  • 符号约定 在本文中可能出现下列标志,它们所代表的含义如下。 符号 说明 用于警示紧急的危险情形,若不避免,将会导致人员死亡或严重的人身伤害。 用于警示潜在的危险情形,若不避免,可能会导致人员死亡或严重的人身伤害。 用于警示潜在的危险情形,若不避免,可能会导致中度或轻微的人身伤害。 用于传递设备或环境安全警示信息,若不避免,可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。 “注意”不涉及人身伤害。 用于突出重要/关键信息、最佳实践和小窍门等。 “说明”不是安全警示信息,不涉及人身、设备及环境伤害。
  • 系统回显 [perfadm@ecs-env-2988 config]$ python3 $GPHOME/script/DisasterFineGrained.py -t get-current-disaster --current-disaster-file $HOME/current.txt --config-file /home/mpp/mppcases_c10/cluster/gs_rch_DR-v6/test/backupRestore.ini [Start ESL disaster fine grained process] current disaster object num: 1. [Finished ESL disaster fine grained process]
  • 使用指南 get-current-disaster命令需在主集群的主节点上执行。用于获取当前容灾对象,以文件形式输出。输出路径为传入参数--current-disaster-file指定路径。 无容灾对象场景下,执行命令不生成当前容灾对象列表文件。 --current-disaster-file文件格式如下: db_name //db级 db_name.schema_name //schema级 db_name.schema_name.table_name //table级
  • 参数说明 完整选项 缩写选项 数据类型 说明 取值类型 缺省值 应用实例 -t 不涉及 字符串 接口支持多种功能。指定该参数为get-current-disaster,获取当前容灾对象。 -t generate-config -t prepare -t create-publication -t alter-publication -t cancel-publication -t get-current-disaster 不涉及 -t get-current-disaster --current-disaster-file 不涉及 字符串 当前容灾对象列表文件路径 不涉及 不涉及 --current-disaster-file /home/userA/current.txt --config-file 不涉及 字符串 双集群容灾配置文件存放路径。 说明: 该路径操作系统用户omm必须拥有读权限。 关于配置文件如何配置,请参见生成配置文件命令。 不涉及 不涉及 --config-file /home/userA/config.ini
  • 命令示例 获取当前容灾列表。 python3 $GPHOME/script/DisasterFineGrained.py -t get-current-disaster --current-disaster-file $HOME/current.txt --config-file /home/mpp/mppcases_c10/cluster/gs_rch_DR-v6/test/backupRestore.ini
共100000条