Oracle、DB2 迁移至 MYSQL、PG 的 表的限制、数据类型映射关系,如何处理?

在 Oracle、DB2 到 MySQL的迁移过程中,大家主要关注应用层面的兼容问题。但是,数据类型的映射转换如何处理呢?我就拿简单的字符串数据类型举个例子吧: Oracle、DB2 与 MySQL,同样的 utf-8 编码格式,同样的表定义,都包含一个 数据类型 char(10) 的字段。 我要将 “一...显示全部

在 Oracle、DB2 到 MySQL的迁移过程中,大家主要关注应用层面的兼容问题。
但是,数据类型的映射转换如何处理呢?

我就拿简单的字符串数据类型举个例子吧:
Oracle、DB2 与 MySQL,同样的 utf-8 编码格式,同样的表定义,都包含一个 数据类型 char(10) 的字段。
我要将 “一二三四五上山打老虎” 这个字符串 insert 到这个字段,猜猜会发生什么?
您肯定会说  “一二三四五上山打老虎” 占了 30 byte ,肯定报错的。
但人家 MySQL的 char(10) 就是把这个含着“老虎”的字符串给“吃”了,  而只有 Oracle、DB2 抛出了类似 “ value is too long ”的错误。
为什么呢?因为 Oracle、DB2的 char(10) 最多只能接收 10 字节的字符串长度,而 MySQL 人家的 char(10) 的含义是可以存储 10个字符。
看到了吧,其实数据类型的不同之处,还是很值得大家关注的。

MySQL5.7 内置数据类型

DB2 10.1 内置数据类型

                                     

收起
参与15

查看其它 2 个回答匿名用户的回答

匿名用户匿名用户

两种办法:
1.使用工具做转换。譬如:Oracle -> MySQL 的工具: ora2mysql; Oracle->PG: ora2pg
2.对照表梳理出来手工做。

Oracle->MySQL的对照表:

Oralce->PG的对照表:

varchar2 -> varchar
number -> numeric
sysdate -> now()
clob -> text/BYTEA
BLOB -> BYTEA

互联网服务 · 2020-08-14
浏览4984

回答状态

  • 发布时间:2020-08-14
  • 关注会员:6 人
  • 回答浏览:4984
  • X社区推广