Teradata到GBase 8a迁移总结
目录
1 DDL语法相关
1.1 字段类型
1.2 建表语句
1.2.1 表类型
1.2.2 表选项
1.2.3 列选项
1.2.4 约束
1.2.5 分布键
1.2.6 导出表(Derived Table)
1.3 复制表结构与数据
2 DML语法相关
2.1 简写
2.2 关联update
3 函数的使用
3.1 同名且用法相同的函数
3.1.1 ORDER BY
3.1.2 CASE WHEN
3.1.3 COALESCE函数
3.1.4 TRIM函数
3.1.5 EXTRACT函数
3.1.6 ADD_MONTHS函数
3.1.7 ROW_NUMBER开窗函数
3.1.8 ABS函数
3.1.9 EXP函数
3.1.10 LN函数
3.1.11 SQRT函数
3.1.12 SUBSTRING函数
3.1.13 SUBSTR函数
3.2 同名用法不同的函数
3.2.1 CAST对各种类型的转换
3.2.2 RANK函数
3.3 不同名函数的等价改法
3.3.1 求幂运算
3.3.2 TD中的LOG函数
3.3.3 TD中ZEROIFNULL函数
3.3.4 TD中NULLIFZERO函数
3.3.5 TD中的DATE和TIME函数
3.3.6 TD中的INDEX函数
3.3.7 TD中FORMAT短语
4 空串处理
4.1 数值、时间类型字段插入空串
4.1.1 int类型插空串
4.1.2 decimal类型插空串
4.1.3 time类型插空串
4.1.4 timestamp 类型插空串
4.1.5 date类型插空串
4.2 字符类型空串、空格的区别
5 不同类型字段的数据交换和关联
5.1 int和date字段的交互和关联
5.2 int/decimal和varchar字段的关联
6 超范围数据的处理
6.1 decimal类型插入超范围数据
6.2 字符类型插入超范围数据
7 SQL语法上的使用差异
7.1 字符型的列等于数值时的强转
7.2 别名依赖
7.3 TD中sql语句以’;'开始的含义
7.4 TD中的WITH RECURSIVE…递归语法
7.5 TD中的QUALIFY语句
8 开窗函数
9 UDF
1 DDL语法相关
本章节主要描述Teradata建表涉及到的相关内容与GBase 8a的差异;Teradata建表语句中包含较多的表选项和列选项,且支持通用的约束,而GBase 8a在这方面要相对简约些。在无文档参考的情况下,一般都是将GBase 8a不支持的全部去掉即可。
1.1 字段类型
Teradata中字段类型与GBase 8a的字段类型对照表如下,供迁移时参考。
数据类型
Teradata
GBase 8a
数值型
DECIMAL(n,m)/DEC(n,m)
DECIMAL(n,m)
NUMERIC(n,m)
NUMERIC(n,m)
BYTEINT范围(-128~127)
TINYINT范围(-127~127)
SMALLINT范围(-32768~32767)
SMALLINT范围(-32767~32767)
INTEGER/INT范围(-2147483648~2147483647)
INTEGER/INT范围(-2147483647~2147483647)
BIGINT范围(-9233372036854775808~9233372036854775807)
BIGINT范围(-9223372036854
775806~9223372036854775806)
REAL
REAL
FLOAT
FLOAT
DOUBLE PRECISION
DOUBLE/DOUBLE PRECISION
字符型
CHAR(n)/CHARACTER(n) 范围(1~64000)
CHAR(n) 范围(1~255)
VARCHAR(n)/CHAR VARYING(n) 范围(1~64000)
VARCHAR(n) 范围(1~10922)
LONG VARCHAR
VARCHAR(10922)/LONGTEXT
GRAPHIC(n) 范围(1~64000)
CHAR(n) 范围(1~255)
VARGRAPHIC(n) 范围(1~64000)
VARCHAR(n) 范围(1~10922)
LONG VARGRAPHIC
VARCHAR(10922)/LONGTEXT
CLOB
VARCHAR(10922)/LONGTEXT
二进制
BYTE(n)
BLOB/LONG BLOB
VARBYTE(n)
BLOB/LONG BLOB
BLOB
BLOB/LONG BLOB
日期时间型
DATE
DATE
TIME
TIME
TIMESTAMP
DATETIME
1.2 建表语句
1.2.1 表类型
Teradata中的表类型与GBase 8a的表类型对照表如下,供迁移时参考。
Teradata
Teradata描述
GBase 8a
GBase 8a描述
CREATE SET TABLE
普通表,不允许重复记录
CREATE TABLE
普通表,允许重复记录
CREATE MULTISET TABLE
普通表,允许重复记录
CREATE TABLE
普通表,允许重复记录
CREATE GLOBAL TEMPORARY TABLE
全局临时表,特点:
①可以被多个用户共享;
②每个用户会话只能看到自己的数据;
③会话(session)结束时,表的数据被丢掉;
④在数据字典中创建并保持表的定义。
CREATE TABLE
普通表,允许重复记录
CREATE VOLATILE TABLE
可变临时表,特点:
①会话级的表,存在于整个会话期间,会话结束表自动删除;
②不使用数据字典;
③一个会话中,最多有64个可变临时表;
④每个可变临时表必须有唯一的名称。
CREATE TEMPORARY TABLE
临时表,特点:
①会话级的表,存在于整个会话期间,会话结束表自动删除;
1.2.2 表选项
Teradata的表选项是GBase 8a所不支持的,迁移时直接去掉即可;对照表如下,供迁移时参考。
Teradata
Teradata描述
GBase 8a
GBase 8a描述
FALLBACK/NO FALLBACK
是否使用FALLBACK保护机制
无
JOURNAL/NO JOURNAL
有无流水日志
无
BEFORE JOURNAL /NO BEFORE JOURNAL
有无前项流水日志,数据变化前
无
AFTER JOURNAL/NO AFTER JOURNAL
有无后项流水日志,数据变化后
无
CHECKSUM = DEFAULT
CHECKSUM 是用来校验数据是否损坏的。DEFAULT是缺省项,可以再DBS程序中设置。不过,一般情况下DEFAULT为NONE选项,NONE选项不进行CHECKSUM计算,所以对性能没有任何印象
无
FREESPACE = 10 PERCENT
FREESPACE用来定义在每个磁盘柱面上保留的空间(0-75%)
无
DATABLOCKSIZE = 16384 BYTES
DATABLOCKSIZE用来指定数据块大小,最小的数据块为6144字节,最大的数据块是32256字节
无
DEFAULT MERGEBLOCKRATIO
默认合并块比
无
1.2.3 列选项
Teradata建表时的列选项与GBase 8a的列选项对照表如下,供迁移时参考。
Teradata
Teradata描述
GBase 8a
GBase 8a描述
DEFAULT
当字段无数据时用默认值来替代NULL
DEFAULT
当字段无数据时用默认值来替代NULL
WITH DEFAULT
用字段的系统默认值替换NULL
无
FORMAT
缺省的显示格式
无
TITLE
缺省的列标题
COMMENT
缺省的列标题
NOT NULL
不允许空值
NOT NULL
不允许空值
CASESPECIFIC
字母大小写敏感
无
UPPERCASE
字母大小写不敏感,内部用大写字母存储
无
COMPRESS
压缩值为NULL的字段存储空间为0
无
COMPRESS NULL
压缩值为NULL的字段存储空间为0
无
COMPRESS
压缩值为NULL和指定值的字段存储空间为0
无
CHARACTER SET LATIN
指定字段存储字符集
无
1.2.4 约束
Teradata建表时的约束项与GBase 8a的约束项对照表如下,供迁移时参考。
Teradata
Teradata描述
GBase 8a
GBase 8a描述
CONSTRAINT
约束名称
无
PRIMARY KEY
主键,非空,无重复值
PRIMARY K