华为云云数据库GaussDB迁移前构造数据_云淘科技

迁移前需要在源库构造一些数据类型,供迁移完成后验证数据。

DRS支持的数据类型如下所示:

表1 数据类型映射关系

源库数据类型

目标库数据类型

源库数据类型做主键,同步能力

源库数据类型做非主键,同步能力

源库数据类型做主键,对比能力

源库数据类型做非主键,对比能力

备注

CHAR

character

支持

支持

支持,忽略字符前后的空格

支持,忽略字符前后的空格

VARCHAR

character varying

支持

支持

支持

支持

源目标库数据表示范围不同,存在精度损失。

VARCHAR2

character varying

支持

支持

支持

支持

NCHAR

character

支持

支持

支持,忽略字符前后的空格

支持,忽略字符前后的空格

NVARCHAR2

nvarchar2

支持

支持

支持

支持

NUMBER

numeric

支持

支持

支持

支持

NUMBER (6,3)

numeric(6,3)

支持

支持

支持

支持

NUMBER (6,0)

Integer

支持

支持

支持

支持

NUMBER (3)

smallint

支持

支持

支持

支持

NUMBER (6,-2)

integer

支持

支持

支持

支持

BINARY_FLOAT

real

不支持(目标库不支持做主键建表)

支持

不支持

支持

源目标库数据表示范围不同,存在精度损失。

BINARY_DOUBLE

double precision

不支持(目标库不支持做主键建表)

支持

不支持

支持

FLOAT

real

不支持(目标库不支持做主键建表)

支持

不支持

支持

源目标库数据表示范围不同,存在精度损失。

INT

numeric

支持

支持

支持

支持

INTEGER

numeric

支持

支持

支持

支持

DATE

date

支持

支持

不支持

支持

DRS在目标库建表时类型为date,此时源目标库数据表示范围不同,存在精度损失,不支持对比。

TIMESTAMP

timestamp(6) without time zone

支持

支持

不支持

校验到小数点后6位

源库使用限制:支持的最大精度是6。

TIMESTAMP_TZ

timestamp(6) with time zone

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

TIMESTAMP_LTZ

timestamp(6) with time zone

不支持(目标库不支持做主键建表)

支持

不支持

过滤该列

INTERVAL_YM

interval year to month

支持

支持

不支持

不支持

增量同步不支持该类型。

INTERVAL_DS

interval day to second

支持

支持

不支持

不支持

增量同步不支持该类型。源库使用限制:支持的最大精度是6。

BLOB

bytea

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

CLOB

text

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

NCLOB

text

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

LONG

text

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

LONG_RAW

bytea

不支持(源库不支持做主键建表)

支持

不支持

过滤该列

RAW

bytea

不支持(目标库不支持做主键建表)

支持

不支持

支持

RowID

character varying(18)

支持

支持

支持

支持

BFILE

不支持

不支持

不支持

不支持

源库使用限制:不支持bfile类型。

XMLTYPE

不支持

不支持

不支持

不支持

源库使用限制:不支持xmltype类型。

UROWID

不支持

不支持

不支持

不支持

全量增量都不支持同步。

sdo_geometry

不支持

不支持

不支持

不支持

源库使用限制:不支持sdo_geometry类型。

NUMBER(*,0)

numeric

支持

支持

支持

支持

执行如下步骤在源库构造数据:

根据本地的Oracle数据库的IP地址,通过数据库连接工具连接数据库。
根据DRS支持的数据类型,在源库执行语句构造数据。

创建一个测试用的用户。

create user test_info identified by xxx;

test_info为本次实践创建的用户,xxx为用户的密码,请根据实际情况替换。

给用户赋权。

grant dba to test_info;

在当前用户下创建一个数据表。

CREATE TABLE test_info.DATATYPELIST(

ID INT,

COL_01_CHAR______E CHAR(100),

COL_02_NCHAR_____E NCHAR(100),

COL_03_VARCHAR___E VARCHAR(1000),

COL_04_VARCHAR2__E VARCHAR2(1000),

COL_05_NVARCHAR2_E NVARCHAR2(1000),

COL_06_NUMBER____E NUMBER(38,0),

COL_07_FLOAT_____E FLOAT(126),

COL_08_BFLOAT____E BINARY_FLOAT,

COL_09_BDOUBLE___E BINARY_DOUBLE,

COL_10_DATE______E DATE DEFAULT SYSTIMESTAMP,

COL_11_TS________E TIMESTAMP(6),

COL_12_TSTZ______E TIMESTAMP(6) WITH TIME ZONE,

COL_13_TSLTZ_____E TIMESTAMP(6) WITH LOCAL TIME ZONE,

COL_14_CLOB______E CLOB DEFAULT EMPTY_CLOB(),

COL_15_BLOB______E BLOB DEFAULT EMPTY_BLOB(),

COL_16_NCLOB_____E NCLOB DEFAULT EMPTY_CLOB(),

COL_17_RAW_______E RAW(1000),

COL_19_LONGRAW___E LONG RAW,

COL_24_ROWID_____E ROWID,

PRIMARY KEY(ID)

);

插入两行数据。

insert into test_info.DATATYPELIST values(4,’huawei’,’xian’,’shanxi’,’zhongguo’,’shijie’, 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,’hw’,’cb’,’df’,’FF’,’FF’,’AAAYEVAAJAAAACrAAA’);

insert into test_info.DATATYPELIST values(2,’Migrate-test’,’test1′,’test2′,’test3′,’test4′, 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,’hw’,’cb’,’df’,’FF’,’FF’,’AAAYEVAAJAAAACrAAA’);

使语句生效。

commit;

在目标端创建库。

登录华为云控制台。
单击管理控制台左上角的,选择区域。
单击左侧的服务列表图标,选择“数据库 > 数据管理服务 DAS”。
在数据管理服务DAS左侧导航栏,单击“开发工具”,进入开发工具数据库登录列表页面。
单击“新增数据库实例登录”,打开新增数据库实例登录窗口。
选择“数据库引擎”、“数据库来源”、目标实例,填写登录用户名、密码以及描述(非必填项)信息,开启定时采集、SQL执行记录功能。

如开启“定时采集”,需勾选“记住密码”。

单击“测试连接”测试连接是否成功。

如测试连接成功,将提示“连接成功”,您可继续新增操作。如测试连接失败,将提示连接失败原因,您需根据提示信息进行修改,以便新增数据库登录成功。

设置完登录信息,单击“立即新增”。
新增完成后,单击新增登录的“登录”,登录当前数据库。

选择“SQL操作”> “SQL查询”进入SQL查询页面。

执行如下语句创建兼容Oracle的数据库。

此例中为:test_database_info,请根据实际情况选择。

CREATE DATABASE test_database_info DBCOMPATIBILITY 'ORA';

父主题: Oracle迁移至GaussDB最佳实践

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家