[懂码帝原创]Oracle数据库转换为Mysql
最近带一个项目,需求是客户要求将oracle数据库换成mysql数据库。
这个需求目前只想到两种方案
1.通过navicat数据转换
2.通过powerDesigner逆向工程重新生成sql语句
第一种方案,网上都描述怎么简单。执行之后发现根本行不通。有两个大的问题
1.时间格式问题,oracle时间长度为7,mysql时间长度最长为6。有说通过转换为timestamp with localtime zone 再进行传输的,试过,确实可以解决一部分问题。但六百多张表,几千个字段需要识别哪些转换为时间戳。太繁琐。替换一个表试完之后又发现第二问题
2.聚合主键问题。这个没有太深究,想到又要每个表去除一下主键问题。就不想继续下去。
第二种方案,也是坎坷。
主要操作步骤,就是powerDesigner链接上oracle数据库转换为dataModel,再重新生成为mysql的dataModel生成sql。
遇到的坑:
1.powerDesigner 不能初始化javaJVM。
2.数据库连接ORA-28040:没有匹配的验证下协议
第一点由于powerDesinger只支持32位的jdk?所以又安装了一个32位的jdk,并setPath,写了个脚本执行了一下
|
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0_25
set CLASSPATH=%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
set path=C:\Program Files (x86)\Java\jdk1.8.0_25\bin
|
第二点,发现powerDesigner配置数据源时,最高版本只到oracle11g,但是公司数据库是12c。
搜索一下有通过11g连接成功12c的博客案例。就用了11g版本连接。
连接时报错,没有匹配的验证协议。一开始以为是数据库版本的问题,后面发现是ojdbc的问题
ojdbc11支持连接oracle10 oracle6支持jdk6,jdk7,oracle7支持jdk7,jdk8。
终于连接上。开始逆向工程。速度很慢。半小时还没走完这六百多张表
连接Mysql数据库时遇到You must configure either the server or JDBC driver (via the serverTimezone conf)的错误,因为安装mysql的时候时区设置的不正确 mysql默认的是美国的时区。
数据库连接加上?serverTimezone=UTC 解决


浙公网安备 33010602011771号