[转帖]Oracle迁移到MySQL时数据类型转换问题
https://www.cnblogs.com/yeyuzhuanjia/p/17431979.html
最近在做“去O”(去除Oracle数据库)的相关工作,需要将Oracle表结构转换成MySQL的表结构。这里面最重要的一点就是字段数据类型的变化。
1.ORACLE常用的数据类型与MySQL的对应关系

2.Oracle 中 varchar2(N) 与 varchar2(N char) 的区别
varchar(N)中是可以存储N个字节,而varchar(N char)是可以存储N个字符。
(对于UTF-8数据集来说:中文占两个字节,而英文占一个字节)
1、varchar2(N):可以存储N byte长度,与字符数无关;例如varchar2(3),可以存储3个byte长度,如'啊a'、'aaa',与字符数无关;
2、varchar2(N char):可以存储N个字符(包括字母和汉字),与字节(byte)长度无关;例如varchar2(3 char),可以存储3个字符(包括字母和汉字),如'啊啊啊'、'aaa'、'啊aa',与字节(byte)长度无关;
说明:对于字符集为UTF-8的MySQL数据库,varchar(10)不区分中英文,可以存储10个中文汉字,或者10个字母或数字。所以从Oracle的Varchar2类型转换成varchar类型,长度保持不变即可满足。
3.number数值类型转化
最复杂莫过于number(p,s),以这个举例来说明如何转换。
p是指有效位数,s是小数位,需要以p和s的实际取值来确定mysql的字段类型:

当p,s均为空时,此时需要参考表内的实际数值或者根据具体业务来确定转换的类型。参考实际数值时,可以采用获取表中max(length(column_name))-1(包含一个小数点)来确定p,用max(length(column_name)-instr(column_name ||'.','.'))(查找小数点后的位数)来确定s的值。
另外,一定要注意MySQL的int(2)这种写法,并不是smallint的别名,不管是int(2)还是int(8),实际都是int。
4.其他注意事项
除了最复杂的number类型以外,其他字段还有几点小建议:
(1)、除非要修改设计以支持秒以下级别的精度,Date最好转换为datetime而不要转为TIMESTAMP,因为TIMESTAMP存在2038年问题。
(2)、ORACLE FLOAT不要转为MYSQL FLOAT,要转为DOUBILE避免精度丢失。
(3)、处理char时,要注意最大的长度。
(4)、BLOB,CLOB转换时,MYSQL也有众多不同长度的类型选择,最好根据实际业务需要和业务数据来判断选择何种长度。
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/17431979.html
[转帖]Oracle迁移到MySQL时数据类型转换问题的更多相关文章
- Oracle迁移到MySQL性能下降的注意点(转)
背景:最近有较多的客户系统由原来由Oracle改造到MySQL后出现了性能问题CPU 100%,或是后台的CRM系统复杂SQL在业务高峰的时候出现堆积导致业务故障.在我的记忆里面淘宝最初从Oracle ...
- 从Oracle迁移到MySQL的各种坑及自救方案
当企业内部使用的数据库种类繁杂时,或者有需求更换数据库种类时,都可能会做很多数据迁移的工作.有些迁移很简单,有些迁移可能就会很复杂,大家有没有考虑过为了顺利完成复杂的数据库迁移任务,都需要考虑并解决哪 ...
- Web系统从Oracle迁移至MySQL
前两天领导给了个活,数据库迁移,原来的系统是用的Oracle数据库,现在要改成MySql,当时没多想就接下来了,原来的系统用的框架式SSI,于是大概想了下需要作调整无非以下几点 第一 数据库迁移 第二 ...
- 使用navicat premium将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL
有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle. 很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面. ...
- 怎么将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL
有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle. 很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面. ...
- 适用MySQL Migration Toolkit 1.0 将oracle迁移到mysql中遇到的问题
这里主要说一下我在适用中碰到的问题,主要过程参考 http://www.cnblogs.com/duwenlei/p/3520759.html. 首先启动MySQLMigrationTool.exe ...
- oracle 迁移到 mysql(结构和数据)
1下载MySQL Migration Toolkit 2安装:jdk-6u38-ea-bin-b04-windows-amd64-31_oct_2012.exe 3下载ojdbc14.jar 具体地址 ...
- 从Oracle迁移到Mysql之前必须知道的50件事
1. 对子查询的优化表现不佳. 2. 对复杂查询的处理较弱 3. 查询优化器不够成熟 4. 性能优化工具与度量信息不足 5. 审计功能相对较弱 6. 安全功能不成熟,甚至可以说很粗糙.没有用户组与角色 ...
- InterBase数据库迁移到MySQL(数据导入)
在这个脚本中我使用的是Python的ORM框架SQLAlchemy来连接远程的MySQL数据库的,在写这个脚本的时候为了方便参数的输入,我就给之前和这个脚本添加了一个新的功能,就是在调用这个脚本的时候 ...
- Oracle 迁移某用户的数据到Sql Server
准备条件: 1.Oracle11g数据库 2.Sql Server 2008 3.Microsoft SQL Server Migration Assistant for Oracle 步奏如下: 1 ...
随机推荐
- 如何延长window11更新信息?
前言 日常使用电脑的时候,我们总是会遇到一个很常见的问题:如何关闭windows自动更新. 解决方法一: 暂停更新 解决方法二: 打开注册表: 运行 => regedit 进入: HKEY_LO ...
- Sequelize的简单连接和使用
Sequelize是一个基于Node.js的ORM框架 特点: 1.支持多种数据库:Sequelize支持多种关系型数据库,包括MySQL.PostgreSQL.SQLite和MSSQL等,适用于需要 ...
- DTT年度收官圆桌π,华为云8位技术专家的年末盘点
摘要:收下这份DTT年度收官圆桌π总结,在新的一年心想事成,技术上更上一层楼. 本文分享自华为云社区<DTT年度收官圆桌π,华为云8位技术专家的年末盘点>,作者:华为云社区精选 . 在20 ...
- 开抢| 华为开发者大会2021(Cloud)早鸟票来了!
他们,是技术的引领者 他们,是科学的追随者 他们用代码守护蓝色星球的生态 破解宇宙深处的密码 化解城市生活的不畅 捉摸自然气候的脾性 ...... 这些改变世界的成果背后 每一个开发者都了不起 --那 ...
- 混合编程:如何用pybind11调用C++
摘要:在实际开发过程中,免不了涉及到混合编程,比如,对于python这种脚本语言,性能还是有限的,在一些对性能要求高的情景下面,还是需要使用c/c++来完成. 本文分享自华为云社区<混合编程:如 ...
- 让数据大白于天下:GCC插件实现代码分析和安全审计
摘要: 如何利用GCC的插件功能,辅助安全分析人员实现对程序的安全审计.漏洞检测.安全加固等自动化处理能力,提升分析效率和精准度. 本文分享自华为云社区<利用GCC插件实现代码分析和安全审计&g ...
- ipa文件怎么安装到iPhone手机上?
ipa文件怎么安装到iPhone手机上? 无需越狱帮你把ipa文件安装到苹果手机上 E86苹果签名简介:点击可查看 很多人都知道apk文件是安卓的app应用程序文件名,但有人知道苹果ios的app ...
- A/B实验背后的秘密:样本量计算
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 一.前言 背景: AB实验具有一定前瞻性,统计性,科学性的特性.用好了就实现了在大数据时代的充分利用数据分析问题, ...
- sqlite3.OperationalError: no such function: JSON_VALID
Initializing database.. Traceback (most recent call last): File "d:\program files\python38\lib\ ...
- Axure 安装使用 FontAwesome
Axure 安装使用 FontAwesome. 字体下载:https://www.bootcss.com/p/font-awesome/ 解压后,到 font 目录,双击 FontAwesome.ot ...