在 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个字符。
看到了吧,其实数据类型的不同之处,还是很值得大家关注的。
两种办法:
1.使用工具做转换。譬如:Oracle -> MySQL 的工具: ora2mysql; Oracle->PG: ora2pg
2.对照表梳理出来手工做。
Oralce->PG的对照表:
varchar2 -> varchar
number -> numeric
sysdate -> now()
clob -> text/BYTEA
BLOB -> BYTEA