技术融合:达梦数据库到南大通用GBase 8s的数据库迁移指南(上)

本篇文章来自南大通用GBase技术社区,更多精彩内容请访问 https://www.gbase.cn/community

在信息技术迅猛发展的今天,数据库迁移是一个复杂但必要的过程,它涉及到详细的规划、周密的执行和严格的测试。从达梦数据库到南大通用GBase 8s的迁移,不仅是技术平台的变更,更是企业数据战略的一次重要调整。通过这次迁移,企业将能够更好地应对大数据时代的挑战,实现数据价值的最大化。本文将深入探讨两种数据库系统之间的基础功能项及语法等差异,了解这些差异对于确保数据的完整性和迁移的顺利进行至关重要,本系列的文章将为您提供一份详尽的迁移指南。

 

一、表差异描述

在数据库迁移过程中,表结构的转换是核心任务之一。表差异主要体现在数据类型、自增列的实现上。以下是达梦数据库(DM)与南大通用GBase 8s在表创建和使用上的基础功能项语法差异的详细描述:

1、数据类型差异

数据类型是数据库设计的基础。GBase 8s与DM在数据类型上存在一定的差异,例如时间类型、浮点数和位字段等,正确处理这些差异是迁移的第一步。

 

2、自增列的实现

自增列是一种特殊的列类型,通常用于生成唯一的序列号。DM和GBase 8s在自增列的实现上有所不同:

  • 在DM中,使用 identity关键字定义自增列,例如 c1 int identity(1,2),其中1是种子值,2是增量值。DM支持查看自增列当前值、种子值、增量值,类似8s序列的功能。

create table FUT_BGL_CKZZL(c1 int identity(1,2), c2 char);
  • 在GBase 8s中,使用 `serial` 关键字来定义自增列,例如 c1 int serial,其效果与DM中的 identity 类似。

create table FUT_BGL_CKZZL(c1 int serial, c2 char);

二、约束定义差异

约束用于确保数据库中数据的准确性和完整性。DM和GBase 8s在约束的定义和操作方式上存在差异:

 

1、启用、禁用约束

  • DM

ALTER TABLE FUT_YS_QYJY DISABLE CONSTRAINT T_CON_PK;
  • GBase 8s

SET CONSTRAINTS T_CON_PK DISABLED;

 

2、修改约束

  • DM

alter   table   FUT_YS_XG  add      constraint   con_c1  primary key(c1);
  • GBase 8s

alter   table   FUT_YS_XG  add  constraint  primary key(c1) constraint con_c1;

 

三、分区表操作

分区表可以提高查询性能和数据管理的灵活性。GBase 8s支持间隔分区、组合分区以及分区的增加、合并、拆分和截断等操作,这些操作在语法上与DM有所区别。

1、间隔分区

DM使用 NUMTOYMINTERVAL 函数定义时间间隔,而GBase 8s使用 NUMTOYMINTERVAL`函数并结合环境变量和SQL模式来实现类似的功能。

  • DM

reate table FUT_FQB_CJJG (ts timestamp,data varchar(20)) partition by range(ts)interval(NUMTOYMINTERVAL(1,'month'))
(partition p0 values less than(to_date('2010-01-01','yyyy-mm-dd')));
  • GBase 8s

export GL_DATE='%iY-%m-%d'Set environmnet sqlmode ‘oracle’;
create table FUT_FQB_CJJG (ts datetime year to fraction(5),data varchar(20)) partition by range(ts)interval(NUMTOYMINTERVAL(1,'month'))
partition p0  values <(date('2010-01-01')) in datadbs1 ;

 

2、组合分区(二级分区)

DM支持使用 list和 range 以及 subpartition关键字来创建组合分区,GBase 8s也支持类似的语法,但在具体实现上可能有所区别。

  • DM

create table "SYSDBA"."T_FUT_FQB_CJZH"("C1" CHAR(10),"C2" INT,"C3" CHAR(10)
)
partition by list("C1")subpartition by range("C2")subpartition template(
subpartition   "PART_1"   values  less   than(10)   storage(on "TS1_FUT_FQB_CJZH"),
subpartition   "PART_2"   values  less   than(20)   storage(on "TS2_FUT_FQB_CJZH"),
subpartition     "PART_3"     values    less     than(MAXVALUE) storage(on "TS3_FUT_FQB_CJZH")
)
(
partition             "PART_1"             values('A')             storage(on"TS1_FUT_FQB_CJZH"),
partition             "PART_2"             values('B')             storage(on"TS2_FUT_FQB_CJZH"),
partition             "PART_3"             values('C')             storage(on"TS3_FUT_FQB_CJZH")
);

 

  • GBase 8s

create table T_FUT_FQB_CJZH(
C1 CHAR(10),
C2 INT,
C3 CHAR(10))
partition by list(C1)subpartition by range(C2)(
partition  PART_1    values('A')   
       (
subpartition   PART_1_1  values   less   than(10) 
       ),

partition             PART_2             values('B')   
       (
subpartition   PART_2_1  values   less   than(20) 
       ),            
                     
partition             PART_3             values('C') 
       (
subpartition     PART_3_1     values    less     than(MAXVALUE) 
       )
)
;

 

3、增加分区、合并分区、拆分分区、截断分区

  • DM

alter table  FUT_FQB_ZJ  add partition  p5  values less  than (maxvalue);
alter  table   FUT_FQB_CJFW   merge  partitions   p3,p4   into partition p3_4;
alter table  FUT_FQB_CJFW  split partition  p2  at('2012-4-1') into (partition p21,partition p22);
alter table FUT_FQB_JD truncate partition(p4);

 

  • GBase 8s

alter FRAGMENT on table  FUT_FQB_ZJ add  partition  p5 values  less  than (maxvalue);
alter FRAGMENT  on table  FUT_FQB_CJFW   merge   partitions  p3,p4   into partition p3_4;
alter FRAGMENT  on table FUT_FQB_CJFW  split  partition p2  at('2012-4-1') into (partition p21,partition p22);
ALTER FRAGMENT ON TABLE FUT_FQB_JD  TRUNCATE PARTITION p4;

 

4、分区表行迁移

  • DM

create  table   FUT_FQB_HQY   (c1  int   ,   c2  varchar(10),   c3 date)partition   by   range(c3)(partition   p1  values   less   than ('2012-3-1'),partition p2 values less than ('2012-6-1'),partition p3 values less than ('2012-9-1'),partition p4 values less than (maxvalue))enable row movement;
alter table  FUT_FQB_HQY  split partition  p4  at('2012-12-1') into (partition p41,partition p42);

 

  • GBase 8s

create  table   FUT_FQB_HQY   (c1  int   ,   c2  varchar(10),   c3 date)partition   by   range(c3)(partition   p1  values   less   than ('2012-3-1'),partition p2 values less than ('2012-6-1'),partition p3 values less than ('2012-9-1'),partition p4 values less than (maxvalue));
alter FRAGMENT  on table FUT_FQB_HQY  split partition  p4  at('2012-12-1') into (partition p41,partition p42);

 

5、自动创建分区

  • DM

create table FUT_FQB_ZD( seq   number not null,update_time   date,
constraint FUT_FQB_ZD_SEQ primary key(seq))
partition by range(update_time)interval(numtoyminterval(3,'month'))
( partition FUT_FQB_ZD1 values less than('2016-01-01'));

 

  • GBase 8s

create table FUT_FQB_ZD( seq   number not null,
update_time    date,
constraint FUT_FQB_ZD_SEQ primary key(seq))
partition by range(update_time)interval(numtoyminterval(3,'month'))
partition FUT_FQB_ZD1 values <('2016-01-01') in datadbs1;

 

以上本文从表、约束、分区表操作等方面,描述了达梦数据库(DM)与南大通用GBase 8s的详细差异。下篇文章我们来说说索引、触发器和存储过程。感谢您的阅读,对于本文内容或数据库迁移的任何问题,欢迎在评论区留言,我们的技术专家将为您提供解答。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容