达梦数据库数据迁移至oracle

  • Post author:
  • Post category:其他


记一次达梦数据库数据迁移至oracle数据库的过程。

一个前后端分离的项目,前端用的vue,后端用的springboot,数据库使用的是国产数据库达梦数据库dm8。现在要切换成oracle,分三步。

一、数据迁移

使用达梦自带的dm数据迁移工具,步骤如下:

1、新建工程

2、打开工程,迁移——点右键新建迁移

3、双击 新建的迁移项目,点下一步,选择DM==>oracle ,点击下一步

4、输入oracle的数据库信息。


5、点击下一步,选择要迁移的数据库,如果迁移到数据库的表和字段大小写同时存在,可以把右侧保持对象名大小写取消勾选,这样迁移oracle会都转为大写,oracle  表名 、字段名 默认不区分大小写,除非建表语句中字段名带双引号 如CREATE TABLE “TableName”(“ID” number)如果保持对象名大小写这一栏是勾上的,迁移工具在迁移的时候会对表名,字段名加上双引号,可能在后面程序运行的时候会报找不到表或者字段的错误,点击一步。

二、修改配置文件

三、数据sql语法对比


数据库语法对比


达梦



oracle


判断空

ifnull(params,”)

nvl(perms,




)


当前日期

sysdate()

sysdate

日期格式化




date



_formate(dateString,pattern)




to


_


date


(dateString,pattern)


字符串拼接


concat

(


‘%’


,


#{参数}


,


‘%’


)


三个参数



concat(

‘%’


||


#{参数}


,


‘%’


)


两个参数


获取插入id

<insert id=

“insertPost”


parameterType=


“SysPost”



useGeneratedKeys=


“true”


keyProperty=


“postId”


>


<insert id=”insertPost” parameterType=”SysPost” >

<selectKey resultType=”java.lang.Long” order=”AFTER” keyProperty=”postId”>

SELECT SYS_POST_SEQ.CURRVAL as id from DUAL

</selectKey>

分页

limit (n-1)*size, size

select

*


from


(


select


t.*,rownum rn


from


CLEAR_01 t) nn



where


nn.rn>


9


and


nn.rn<


101


;


主键

达梦可设置自增主键,插入时可不插主键

无自增主键,需要新建自增序列,插入时使用序列SEQ_ID.NEXTVAL

批量插入

insert into 表名(字段名)values (字段值),···,(字段值)

<insert id=”

batch


“>



insert into


table(table_id, table_name)


values



<foreach item=”


item


” index=”


index


” collection=”


list


” separator=”


,


“>

(#{item.tableId},#{item.tableName})

</foreach>

</insert>


不支持直接插入多行,可循环插入或使用 union

<insert id=”batch”>

begin

<foreach item=”

item


” index=”


index


” collection=”


list


“>



insert


into


table

(table_id, table_name)



values



#{item.roleId},#{item.menuId};

</foreach>

end

</insert>



<insert id=”batch”>



insert into


table(table_id, table_name)

<foreach item=”


item


” index=”


index


” collection=”


list


” separator=”


union


“>



select


#{item.roleId},#{item.menuId}


from


dual

</foreach>

</insert>


大小写

日期

date显示时分秒

插入date类型,数据存为00:00:00,可用timestamp代替

xml中类型改为jdbcType=TIMESTAMP

char

插入后无空格

插入后有空格,插入前可用NVARCHAR2代替



版权声明:本文为unionall原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。