[懂码帝原创]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 解决

 

 

 

 

posted @ 2020-04-20 16:42  懂码帝  阅读(516)  评论(0)    收藏  举报