logo
GBase 8a
适配迁移
文章

南大通用数据迁移之GP_To_GBase8a(四)-数据类型详解

Robin
发表于2024-06-13 19:40:26577次浏览0个评论

1.综述

本节的内容用于指导在将GREENPLUM的表迁移到GBase的表过程中涉及到的GREENPLUM标准数据类型如何映射到GBase数据库表中。共包含四大类数据类型:
二进制数据类型;
字符数据类型;
数值数据类型;
日期时间数据类型。
GREENPLUM多种标准数据类型及各类自定义类型,大部分内建类型都可以用GBase8a数据库中的数据类型进行替换,但仍然有一些数据类型(如几何类型、网络地址类型,文本搜索类型及自定义的数据类型)没有可映射的标准类型,因此需要根据应用系统的实际需求选择合适的GBase标准数据类型进行替换,并且可能需要相应的调整应用系统中涉及这些类型的部分程序。

2.二进制数据类型迁移

2.1.BYTEA数据类型

在GREENPLUM中,如果要存储Word、Excel文档,图片文件等,可以使用bytea类型的列,bytea类型是GREENPLUM特有的存储二进制数据的字段类型。存储的二进制大对象最大尺寸为1GB。
GBase可替代的数据类型: LONGBLOB,但最大尺寸仅为64M。
BYTEA数据类型主要有BYTEA十六进制格式和BYTEA转义格式两种,但是需要注意的是BYTEA转义格式采用以ASCII字符序列来表示二进制串的方法, 同时将那些无法表示成ASCII字符的二进制串转换成特殊的转义序列。从应用的角度看, 如果代表字节的字符有意义,那么这种表示方法会很方便。但实际上, 这样做会模糊二进制字符串和字符字符串之间的区别,从而造成困扰, 同时筛选出的转义机制会显得很臃肿。因此对一些新应用应该恰当的避免这种格式。 

3.字符数据类型

3.1.CHARACTER VARYING(N), VARCHAR(N)类型

在GREENPLUM中用于存储单字节字符的字符串大对象,支持变长字符集(有长度限制)。最大尺寸为10M。
可根据括号中n的长度来决定GBase替代的数据类型:VARCHAR/TEXT,最大长度均为10922个字符。

3.2.CHARACTER,CHAR(N)类型

在GREENPLUM中用于存储单字节字符的字符串大对象,支持定长字符集,不足补空白。最大尺寸为10M。
可根据括号中n的长度来决定GBase替代的数据类型:CHAR/TEXT,但CHAR最大尺寸仅为255字节。

3.3.TEXT类型

在GREENPLUM中用于存储单字节字符的字符串大对象,支持变长字符集(无长度限制)。
GBase替代的数据类型:TEXT,但最大长度均为10922个字符。

4.数字数据类型

4.1.SMALLINT

标准的 SQL 数据类型,存储长度2字节,存储范围-32768~+32767,GBase可以使用 SMALLINT 数据类型替代。

4.2.INT, INTEGER

标准的 SQL 数据类型,存储长度4字节,存储范围-2147483648~+2147483647,GBase可以使用 INT, INTEGER 数据类型替代。

4.3.BIGINT

标准的 SQL 数据类型,存储长度8字节,存储范围-9223372036854775808~+9223372036854775807,GBase可以使用 BIGINT。

4.4.DECIMAL(p,s),NUMERIC(p,s)

标准的 SQL 数据类型,变长类型,GBase可以使用 DECIMAL(p,s) 数据类型替代。

4.5.FLOAT[(precision)]

标准的 SQL 数据类型,GBase可以使用 FLOAT(precision) 数据类型替代。

4.6.REAL

标准的 SQL 数据类型,GBase可以使用高精度decimal数据类型替代。

4.7.DOUBLE PRECISION

标准的 SQL 数据类型,GBase可以使用 DOUBLE  数据类型替代。

5.TIMESTAM时间类型

5.1.P[(precision)]

存储日期值,包括年、月、天、小时、分、秒,precision 表示了秒字段的数字位数。precision 字段的范围是 0 到 9 默认值是 6 。
GBase可替代的数据类型:
TIMESTAMP 要注意的是 GBase 时间类型只精确到秒,其范围是公元 1970 年 1 月 1 日 0时 0 分 1 秒到 公元 2038 年 01 月 19 日 03 时 14分 07 秒。

5.2.TIMESTAMP[(precision)] WITH TIME ZONE

存储带时区的时间 TIMESTAMP 值。GBase可替代的数据类型:TIMESTAMP,但时区信息无法保存。

5.3.DATE

DATE 是一个由三部分组成的值(年、月和日)。年份部分的范围是从 0001 到 9999。月份部分的范围是从 1 到 12。日部分的范围是从 1 到 n,其中 n 的值取决于月份。DATE 列长 10 个字节。
GBase可替代的数据类型:
DATETIME 要注意的是 GBase 的时间范围是从公元 0001 年 1 月 1 日 到 公元 9999 年 12 月 31 日。

5.4.TIME

TIME 是一个由三部分组成的值(小时、分钟和秒)。小时部分的范围是从 0 到 24。分钟和秒部分的范围都是从 0 到 59。如果小时为 24,分钟和秒的值都是 0。TIME 列长 8 个字节。
GBase可替代的数据类型:TIMESTAMP

5.5.TIME[(precision)] WITH TIME ZONE

存储带时区的时间 TIME 值。GBase可替代的数据类型:TIMESTAMP,但时区信息无法保存。
 

评论

登录后才可以发表评论