Oracle数据转移Mysql中遇到的问题以及解决办法

前几天因工作需要我得将Oracle数据库中几十张表转移到Mysql中,由于之前没有相关经验,上网简单百度后选用Navcat Premium软件工作。

Navcat Premium进行数据转移有三种办法:1、复制表  2、导出、导入数据  3、导出成sql脚本,执行。

一开始使用复制表的方法,打开菜单栏“工具”的数据传输功能,左边选择要复制的表,右边选择连接然后选中目标数据库,接下在就是next by next的一键式操作。这个方法真的很方便,但是bug也很多,最大的bug是数值类型不匹配。Oracle中数值类型是Number2,复制到Mysql中默认为double型,而我需要的是int型。使用这方法失败。

接着尝试将Oracle表中数据导出为文件再导入Mysql,由于导入导出操作有些复杂,且无法批量操作,需要在Mysql中先创建表,然后逐一导入数据,所以放弃。

最后尝试将数据以及表结构转储为sql脚本文件,在Mysql中执行。打开菜单栏“工具”的数据传输功能,左边选择要复制的表,右边选择文件。Mysql中执行sql文件时遇到问题,Oracle转储生成的sql脚本文件中数值类型是decimal(xx,xx),日期类型是datetime(x),而Mysql中没有decimal数值类型,日期类型只支持datetime并无显式的大小限定,于是决定用sublime编辑器修改。使用sublime查找功能find all找出所有datetime(xx,xx),统一改为int,执行后发现有错误。原来有的字段类型是decimal(xx,xx)而有的字段类型是decimal(x,x),deciaml(xx,x)……,统一修改时会误删其它字符。于是想到正则表达式匹配,刚好sublime支持正则查找,使用正则查找功能匹配所有decimal(xx,xx),decimal(xx,x),decimal(x,xx)……统一改为int类型,然后用同样的方法修改datetime类型,再执行sql脚本,这下终于成功执行,数据也都是正确的,大功告成!

最后说说这个方法的局限:如果有这样一个需求,Mysql中部分字段数值类型需要是double、部分需要是int,这该如何是好?暂时能想到的是先在Mysql中创建表,再逐一导入数据。

时间: 2024-10-14 01:03:54

Oracle数据转移Mysql中遇到的问题以及解决办法的相关文章

mysql中遇到1366错误的解决办法

最近给学校做一个项目,数据库要用到oracle,如果在windows下面的,安装oracle是比较简单的,但是很不巧,在我接项目前,刚刚换了台Mac,所以这回问题大了,oracle现在最新的版本还不支持Mac os系统,目前10g是支持Mac os的,但是10g官网的资源已经撤掉了,但是你可以通过其他渠道拿到Mac版的10g的oracle安装包.说的有些远了,还是回到我们的话题.由于还没有在我的Mac系统上安装好oracle,所以为了不拖慢项目的进度,所以我就先用mysql来应急下.但是当我把m

mysql中连接失败2003错误解决办法

在使用mysql数据库,新建连接时,会报2003-Can't connect to server on 'localhost'(10038)错误,原因主要是MYSQL服务没有启动起来,但是进入:计算机——管理——服务中,找不到MYSQL服务,主要解决办法: 方法1: 1.找到mysql的安装路径下的 bin 文件夹下,例如我的是:"E:\dataBase\mySQL\bin"; 2.找到bin文件夹下的 “mysqld.exe” 可执行文件,双击,这样mysql服务就可以在服务中找到了

使用MySQL Migration Toolkit快速将Oracle数据导入MySQL[转]

使用MySQL Migration Toolkit快速将Oracle数据导入MySQL上来先说点废话本人最近在学习一些数据库方面的知识,之前接触过Oracle和MySQL,最近又很流行MongoDB非关系型数据库,所以干脆一起研究一下,对比学习中找不同,首先说一下本人使用的数据库版本和可视化工具Oracle10G—PL/SQL Developer9MySQL5.5.29—MySQL Workbench6.0MongoDB2.4.9(32bit最大2G)—Robomongo0.8.4为了保持数据的

使用MySQLMigrationToolkit快速将Oracle数据导入MySQL

使用MySQL Migration Toolkit快速将Oracle数据导入MySQL 上来先说点废话 本人最近在学习一些数据库方面的知识,之前接触过Oracle和MySQL,最近又很流行MongoDB非关系型数据库,所以干脆一起研究一下,对比学习中找不同,首先说一下本人使用的数据库版本和可视化工具 Oracle10G—PL/SQL Developer9 MySQL5.5.29—MySQL Workbench6.0 MongoDB2.4.9(32bit最大2G)—Robomongo0.8.4 为

运用Navicat for MySQL进行MSSQL数据转移MYSQL

当前不同数据库进行数据转移已经不是一件麻烦事情,特别是有很多很方便的工具,而最近我在搜集各种数据时候,也需要进行大量的数据转移,并且数据库和所转移的数据库表都不同,这次给大家介绍个最简单的方法,就是使用Navicat for MySQL从SQL server中转移数据到MYSQL中 1.需要进行转移的mssql数据库数据 2.打开Navicat for MySQL软件,并连接到自己的MYSQL数据库选择对应的数据库表,然后点击软件图片所示的 导入 按钮,选择最后一项 3.按照流程,点击指示按钮,

Scrapy基础(十二)————异步导出Item数据到Mysql中

异步导出数据到Mysql中 上次说过从Item中同步写入数据库,因为网络的下载速度和数据库的I/O速度是不一样的所以有可能会发生下载快,但是写入数据库速度慢,造成线程的堵塞:关于堵塞和非堵塞,同步和异步的关系,因为没接触过,所以也不是很好的理解,这里查看了些资料,已做记录 链接1:https://www.zhihu.com/question/19732473;http://wiki.jikexueyuan.com/project/twisted-intro/ 实现异步写入mysql数据库的思路:

解决hibernate保存数据到mysql中出现乱码问题

今天使用hibernate保存数据到mysql中,发现出现乱码问题,经过检查,发现接收到的是正确中文,说明客户端浏览器将中文编码发送到服务器过程中无乱码问题,后来查找资料: 首先要告诉数据库要插入的字符串的字符集,mysql 默认使用的字符集是 latin1.我要保存的字符串是 UTF-8 编码的(字符集是 Unicode),所以包含这个字段的表应该使用 UTF-8 编码. 这里有几种解决办法. 1.在建立数据库的时候指定数据库的字符集编码,这样,这个数据库的所有表都会默认使用数据库的字符集编码

ORACLE 数据转换为MYSQL

ORACLE 数据转换为MYSQL ①将oracle数据转换为txt文本,且分割符为'|' ②新建表,记得修改的表结构,因为oracle和mysql 字段有些不一致的. 参照下面表格: ③执行导入操作 load data local infile '文件名.txt' into table 数据库表名  character set utf8 fields terminated by '|' ;

python爬取微博图片数据存到Mysql中遇到的各种坑\python Mysql存储图片

本人长期出售超大量微博数据,并提供特定微博数据打包,Message to [email protected] 前言   由于硬件等各种原因需要把大概170多万2t左右的微博图片数据存到Mysql中.之前存微博数据一直用的非关系型数据库mongodb,由于对Mysql的各种不熟悉,踩了无数坑,来来回回改了3天才完成. 挖坑填坑之旅 建表 存数据的时候首先需要设计数据库,我准备设计了3个表 微博表:[id, userid, blog_text, lat, lng, created_time, res