约束和限制
DSC迁移Teradata的约束和限制如下:
- DSC仅用于语法迁移,不支持数据迁移。
- 如果在将IN/NOT IN操作符转换为EXISTS/NOT EXISTS时,子查询的SELECT子句包含aggregate函数,则可能导致迁移失败。
Teradata
- 如果含有FORMAT参数的case语句未用半角括号“()”括起来,该语句不会处理。
在该示例中,case when column1='0' then column1='value' end未用半角括号括起,因此不会处理该语句。
- 如果Teradata查询中同时使用SELECT *和QUALIFY子句,迁移的查询会为QUALIFY子句多返回一列。
Teradata查询
1 2 3 4
SELECT * FROM dwQErrDtl_mc.C03_CORP_TIME_DPSIT_ACCT WHERE 1 = 1 AND Data_Dt = CAST( '20150801' AS DATE FORMAT 'YYYYMMDD' ) QUALIFY ROW_NUMBER( ) OVER( PARTITION BY Agt_Num, Agt_Modif_Num ORDER BY NULL ) = 1;
迁移后的查询
1 2 3 4 5 6 7
SELECT * FROM ( SELECT *, ROW_NUMBER( ) OVER( PARTITION BY Agt_Num, Agt_Modif_Num ORDER BY NULL ) AS ROW_NUM1 FROM dwQErrDtl_mc.C03_CORP_TIME_DPSIT_ACCT WHERE 1 = 1 AND Data_Dt = CAST( '20150801' AS DATE ) ) Q1 WHERE Q1.ROW_NUM1 = 1;
在迁移后的查询中,ROW_NUMBER( ) OVER( PARTITION BY Agt_Num ,Agt_Modif_Num ORDER BY NULL ) AS ROW_NUM1列为额外返回的一列。
- 子查询或函数内不支持对表的命名引用。
- 带有模式名的数据库更改为“SET SESSION CURRENT_SCHEMA”。
TD 语法
迁移后语法
DATABASE SCHTERA
SET SESSION CURRENT_SCHEMA TO SCHTERA
- 输入文件中包含表的专用关键词MULTISET VOLATILE,但GaussDB(DWS)不支持该关键词。因此,DSC在迁移过程中用关键词LOCAL TEMPORARY/UNLOGGED替换该关键词。请通过session_mode参数为CREATE TABLE语句设置默认表类型(SET/MULTISET)。