国产数据库---Oracle迁移⾄GBa8a---第⼀章---数据类型
从今天开始,分享Oracle迁移⾄GBa8a的⼀些随笔,希望对⼤家有帮助。
半边脸肿经过⼀段时间的分析和整理了基于ORACLE数据库的应⽤系统向GBa 8a数据库迁移的过程中需要注意的问题和对应的⽅法。
涉及的内容包括数据库迁移和应⽤程序迁移两部分。
数据库迁移是指对数据库对象的迁移,内容包括数据库对象的差异,数据类型迁移,表达式和操作符迁移,SQL语句迁移,内建函数对⽐,临时表对⽐,游标对⽐,存储过程和函数定义对⽐,视图对⽐,触发器对⽐,Secquence(序列)迁移等。
猪八戒的人物形象应⽤程序迁移是针对使⽤不同的数据库开发接⼝所实现的应⽤程序的迁移。包括ODBC、JDBC、OLE DB、ADO、ADO等开发接⼝。
1.
1. 综述
本节的内容⽤于指导在将ORACLE的表迁移到GBa 8a的表过程中涉及到的ORACLE标准数据类型如何映射到GBa 8a数据库表中。共包含四⼤类数据类型:
1. ⼆进制数据类型
2. 字符数据类型
3. 数字数据类型
4. ⽇期时间数据类型。
ORACLE多种标准数据类型及各类⾃定义类型,⼤部分内建类型都可以⽤GBa 8a数据库中的数据类型进⾏替换,但仍然有⼀些数据类型(如BFILE、ROWID及⾃定义的数据类型)没有可映射的标准类型,因此需要根据应⽤系统的实际需求选择合适的GBa 8a标准数据类型进⾏替换,并且可能需要相应的调整应⽤系统中涉及这些类型的部分程序。
1.
1. ⼆进制数据类型迁移
GBa8a是⾯向海量数据的分析处理场景设计的,主要应⽤于基于海量数据的即席查询、数据仓库处理、数据集市查询等应⽤。在这类应⽤中,⼆进制数据类型即不会作为查询条件,也不会作为操作结果,因此,原则上,GBa8a不⽀持⼆进制数据类型。
Oracle中的BFILE、BLOB、RAW(size)、LONGRAW等⼆进制数据类型在GBa8a中不被⽀持。
1.
1. 字符数据类型
1. CLOB类型
在ORACLE中⽤于存储单字节字符的字符串⼤对象,⽀持各种定长、变长字符集。最⼤尺⼨为4GB。
GBa 8a可替代的数据类型:
TEXT,但最⼤尺⼨仅为32K。
1.
1.
将进酒歌词
1. LONG类型
保存可变长度的字符串⼤对象,最⼤尺⼨为2GB。ORACLE推荐⽤CLOB或NCLOB类型替代该类型。
GBa 8a可替代的数据类型: TEXT,但最⼤尺⼨为32KB。
1.
1.
1. NCHAR(length)类型
存储固定长度的Unicode字符。在ORACLE中NATIONAL CHAR(length)、NATIONAL CHARACTER(length)是该类型的同义词。最⼤尺⼨为2000Bytes。
GBa 8a可替代的数据类型:
1. 当length的长度<=255字节时,可以使⽤GBa 8a的CHAR(size)替代(size<255)。
2. 当length⼤于255时,可以使⽤GBa 8a的VARCHAR(size)替代,size<32766。但这种类型为变长列类型。
1.
1. NCLOB
⽤于存储Unicode字符集的⽂本⼤对象,存储变长字符集的数据(Unicode)。最⼤尺⼨为4GB。
GBa 8a可替代的数据类型:
使⽤utf8字符集的TEXT,最⼤尺⼨为32KB。
1.
1.
1. CHAR(length)
存储固定长度的字符。在Oracle中存储的是数据库字符集的字符。是CHARACTER(length)的同义词。最⼤尺⼨2000Bytes。
GBa 8a可替代的数据类型:
1. 当length的长度<=255字节时,可以使⽤GBa 8a的CHAR(size)替代(size<255)。
2. 当length⼤于255时,可以使⽤GBa 8a的VARCHAR(size)替代,size<32766。但这种类型为变长列类型。
1.
1. NVARCHAR2(length)三鲜饺子馅的做法
存储变长字符的字符串,等于字符的长度,数据储存在Unicode字符集中。最⼤长度4000bytes。同义词有NATIONAL CHARACTER VARYING(length), NATIONAL CHAR VARYING(length), NCHAR VARYING(length)。
GBa 8a可替代的数据类型:
使⽤ utf8 字符集的VARCHAR(length)
1.
1.
1. VARCHAR2(length [BYTE | CHAR])
存储变长字符集的字符串,可以按Byte或字符个数来定义长度。最⼤长度4000Bytes或字符数。同义词有CHAR VARYING(length), CHARACTER VARYING(length), VARCHAR(length)。
GBa 8a可替代的数据类型:
VARCHAR(length)
1.
1. 数字数据类型
天净沙秋思翻译1. BINARY_DOUBLE
存储64位的浮点数。
GBa 8a可替代的数据类型:
家常炖甲鱼DOUBLE PRECISION
1.
1.
1. BINARY_FLOAT
存储32位的浮点数。
GBa 8a可替代的数据类型:
FLOAT
1.
1.
1. NUMBER(p,s)
在⼀定的精度和范围下存储数字。精度(p)在1-38位10进制的数字,范围(s)可以是 -84 到 127 。这个数字数据可以是任意的固点或浮点数字。如果 p或 s 被指定,那么这个数是⼀个经过处理的浮点数。如果传⼊不正确的数字,可能会发⽣舍⼊错误。同义词有DECIMAL, DOUBLE PRECISION, FLOAT, INT, INTEGER, NUMERIC, REAL, SMALLINT。
GBa 8a可替代的数据类型:
DECIMAL(p,s)和INT族类型,在s不为0的情况下,替代为DECIMAL类型,在s为0的情况下,根据p的长度替代为INT族类型。
1.纪念册
1.
1. DECIMAL(p,s)
标准的 SQL 数据类型,是 Oracle NUMBER(p,s) 同义词。GBa 8a可以使⽤ DECIMAL(p,s) 数据类型替代。
1.
1.
1. INT, INTEGER
标准的 SQL 数据类型,是 Oracle NUMBER(38) 同义词。GBa 8a可以使⽤ INT, INTEGER 数据类型替代。但GBa 8a中int的最⼤字节为4字节。
1.
1.
1. NUMERIC(p,s)
标准的 SQL 数据类型,是 Oracle NUMBER(p,s) 同义词。GBa 8a可以使⽤ NUMERIC(p,s) 数据类型替代。
1.
1.
1. REAL
标准的 SQL 数据类型,是 Oracle 64 位精度NUMBER 同义词。GBa 8a可以使⽤DECIMAL(p,s)数据类型替代。
1.
1.
1. SMALLINT
丰台镇标准的 SQL 数据类型,是 Oracle NUMBER(38) 同义词。GBa 8a可以使⽤ SMALLINT 数据类型替代。
1.
1. 时间类型
1. DATE
存储⽇期和时间,范围从公元前 4712 年 1⽉ 1⽇ 到公元 9999 年 12 ⽉ 31 ⽇。
GBa 8a可替代的数据类型:
DATETIME,但要注意的是 GBa 8a 的时间范围是从公元 1000 年 1 ⽉ 1 ⽇ 到 公元 9999 年 12 ⽉ 31 ⽇。
1.
1.
1. TIMESTAMP[(precision)]
存储⽇期值,包括年、⽉、天、⼩时、分、秒,precision 表⽰了秒字段的数字位数。precision 字段的范围是 0 到 9 默认值是 6 。GBa 8a可替代的数据类型:
TIMESTAMP,但要注意的是 GBa 8a 时间类型只精确到秒,其范围是公元 1970 年 1 ⽉ 1 ⽇ 0时 0 分 1 秒到 公元 2038 年 01 ⽉19 ⽇ 03 时 14分 07 秒。