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) ) ; |