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

在 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 内置数据类型

                                     

2回答

匿名用户匿名用户
KiKibj冯岩赞同了此回答
两种办法:1.使用工具做转换。譬如:Oracle -> MySQL 的工具: ora2mysql; Oracle->PG: ora2pg2.对照表梳理出来手工做。 Oracle->MySQL的对照表: Oralce->PG的对照表: varchar2 -> varcharnumber -> numericsysdate -> now()clob -> text/BYTEAB...显示全部

两种办法:
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
浏览1674
  • 非常感谢您的回复,后续我测试下,再次感谢!!!
    2020-08-15
ThinkJThinkJ  技术经理 , 信泰人寿保险股份有限公司
冯岩赞同了此回答
DSG的同步工具也能做类型的映射和转换,效果也还不错显示全部

DSG的同步工具也能做类型的映射和转换,效果也还不错

收起
 2020-08-14
浏览1550

提问者

冯岩数据库管理员, 银行

分布式关系型数据库选型优先顺序调查

发表您的选型观点,参与即得50金币。

问题状态

  • 发布时间:2020-08-14
  • 关注会员:4 人
  • 问题浏览:3145
  • 最近回答:2020-08-14