ITPub博客

首页 > 数据库 > 国内数据库 > GBase8g向GBase8s数据迁移

GBase8g向GBase8s数据迁移

原创 国内数据库 作者:gbase8sl301 时间:2020-08-25 18:31:07 0 删除 编辑

GBase 8 g 向 GBase 8 s 数据库 进行 迁移

背景

因业务需求,需要将以往项目使用的GBase 8g 数据库 中的数据, 迁移到 G base8s 数据库中 。在此记录 迁移 遇到的一些问题和解决方法。

目标

将GBase 8g 的数据成功迁移到 G Base8t 后 ,原有程序功能可以正常运行

问题列表

n  自定义排序  

 

1 、问题描述 :

由于业务需求,需要将某个字段根据自定义顺序进行排序。

例如 :数据中 filedA 的值保存为 1,2, 3 数值形式 , 但页面上要以1,3,2 的顺序进行展示

在 G Base8g 中可以使用 order by Filed( 字段 , 1,3,2 ) 的方法进行自定义排序,但迁移后在 G Base8s 中无法使用这样的方法 。

 

2 、解决方法:

可以引用临时表的方法 来 实现该需求 。

建排序临时表“ sort_table ”,定义字段: sort_seq 排序号, sort_name 排序字段。

将需要自定义的排序顺序保存到sort_name 中,对应的 sort_seq 写实际的顺序

例如 :

sort_name

sort_seq

1

1

3

2

2

3

 

使用:join sort_table st on 字段 =st.sort_name order by st.sort_seq 的方式来实现自定义排序

 

 

 

 

 

 

n  distinct 数据内容

 

1 、问题描述 :

在原有系统中,初始设计简单,没有考虑sql 优化问题,数据查重直接使用如下语句

select distinct * from 表 A   where XXX;

其中表A 包含 blob ,text 等大对象字段 。 GBase8s 对 sql 要求严格 , distinct 大对象字段是不推荐使用的

2 、解决方法 :

优化数据结构及sql 语句,尽量将不常用的大对象字段与经常使用的字段在数据表中拆分开来,在 distinct 时只针对需要查重的字段进行操作,并使用索引。

 

n  字段是关键字

 

1、  问题描述

在GBase8g 中,current 不是系统关键字,设计数据表时使用 current 作为当期值的字段名称。但迁移到 G Base8s 后 , current 是系统关键字 。 程序中查询current 的 sql 无法顺利执行 。

2、  解决方法:

将查询sql 优化 , 改写为 表名. 列名的方法进行数据查询 。

 

n  日期格式

 

1、  问题描述

在GBase8g 中,日期格式若插入值为空时,默认的日期格式是填充空串

'0000-00-00 00:00:00' 。在GBase 8s 中不允许空串插入日期格式 , 在数据迁移时会报异常 。

2、  解决方法:

在G Base8g 数据库中 ,将内容为空串的日期修改为正确的统一初始值,之后再进行数据迁移。

 

n  数据表迁移顺序

 

1、  问题描述

在GBase8g 与G Base8s 的数据迁移工具中 , 只有数据表与数据的迁移步骤 。若表中有索引、自增列或视图时,在用迁移工具进行数据表和数据的迁移后,很难一次性将索引、视图等建立成功。

 

2、  解决方法:

迁移数据结构后,先维护数据表的自增列,然后再执行建视图语句,最后再 迁移数据 :

因为迁移结构时,无法将自增列迁移过来。而若在视图中存在表数据类型,在迁移视图后,则无法成功修改数据表的自增列。最后进行数据的迁移,是因为若数据量大,在迁移数据后再修改自增列很可能会提示临时空间不足导致失败。

另外需要注意的是,若在G Base8s 建库时,选择的是无日志模式,那么在迁移数据后,需要修改数据库的日志模式:因为无日志模式数据库不支持事务,会导致程序启动报错 。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980390/viewspace-2714647/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: GBase8S_RSS配置
请登录后发表评论 登录
全部评论

注册时间:2020-08-04

  • 博文量
    9
  • 访问量
    9725