位置: 编程技术 - 正文

数据从MySQL迁移到Oracle 需要注意什么(mysql数据库数据迁移)

编辑:rootadmin

推荐整理分享数据从MySQL迁移到Oracle 需要注意什么(mysql数据库数据迁移),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql数据迁移方法,mysql迁移到gaussdb,mysql如何迁移数据库,mysql数据迁移方法,mysql迁移到gaussdb,mysql如何迁移数据库,mysql迁移数据库到另一台机器,mysql如何迁移数据库,内容如对您有帮助,希望把文章链接给更多的朋友!

将数据从MySQL迁移到Oracle的注意事项,有如下几点

1.自动增长的数据类型处理

MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记)INCREMENT BY 1 START WITH 1 MAXVALUE CYCLE NOCACHE;

INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL

2. 单引号的处理

MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。当然你如果使用 Convert Mysql to Oracle工具就不用考虑这个问题

3.长字符串的处理

在ORACLE中,INSERT和UPDATE时最大可操作的字符串长度小于等于个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。

4. 翻页的SQL语句的处理

MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数。ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<, 不能用ROWNUM>。

以下是经过分析后较好的两种ORACLE翻页SQL语句(ID是唯一关键字的字段名):语句一:

语句二:

5. 日期字段的处理

MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间SYSDATE, 精确到秒。日期字段的数学运算公式有很大的不同。MYSQL找到离当前时间7天用:DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)ORACLE找到离当前时间7天用:DATE_FIELD_NAME >SYSDATE - 7;

6. 字符串的模糊比较

MYSQL里用 字段名 like '%字符串%',ORACLE里也可以用 字段名 like '%字符串%' 但这种方法不能使用索引, 速度不快,用字符串比较函数 instr(字段名,'字符串')>0 会得到更精确的查找结果。

7. 空字符的处理

MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。

Oracle移植到mysql注意事项

客户用的数据库是mysql,而研发好的产品支持oracle,我们必须把数据库环境从oracle移植到mysql。在移植的过程中碰到了下面一些问题,如果我们在最初的设计、编码过程中注意数据库的移植性,这种情况下可以完全不需要作额外工作。

数据从MySQL迁移到Oracle 需要注意什么(mysql数据库数据迁移)

一、数据库环境从oracle移植到mysql碰到的问题。

1、 大小写敏感的区别(如果服务器OS是linux)。

在oracle中一般情况下不区分大小写。有时候我们在使用oracle不注意大小写的问题,表名和字段名不加双引号是不区分大小写的,像这样:insert into tableName 和 insert into TABLENAME效果是一样的,用工具导出创建/数据初始化脚本,得到的结果一般表名和字段名转化成了大写。

但在MySQL中,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,使用数据库或表实际上是操纵这些文件(夹),所以使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。在以linux为内核的操作系统中是大小写敏感的。

解决办法,是把mysql的数据库名和oracle的大小写保持一致,表名与应用程序中sql字符串中的表名保持一致,如果应用程序中字段名用了双引号,那请把sql中的字段名大小写与双引号里的字符保持一致。如果你的应用程序所引用的表名、字段没有统一大小写,那麻烦就大了。

2、保留字的区别。

像sql语言的函数名(如:inteval,show)等是保留字。Oracle中保留字是可以作为表名和字段名,并且不影响使用,但mysql中保留字是不能作为表名和字段名,如果使用会报语法错误。

解决办法,把sql语句中的保留字用‘`'符号引起来,这个符号位于键盘的tab键上面;如果是字段名还有另外一种方法tablename.字段名。像这样:insert into tablename (id, `interval`) value(…..或insert into tablename (id, tablename.inteval) value(…..

3、自动增长类型的区别。

Oracle有sequence,mysql中没有,但有auto_increment属性。

解决办法是把Oracle中sequence转换成使用auto_increment属性,某些情况可能还有一种办法可以解决问题,新建一个独立的表用来专门记录自动增长型的数据。

4、数据类型的区别。在mysql中没有像oracle中的varchar2、number,mysql有与之对应的varchar、numeric,当然在oracle中没有mysql的time类型。

解决办法是替换。

5、索引长度限制的区别。

从MySQL 4.1.2开始,MyISAM和InnoDB表索引长度支持字节,也就是说索引字段的长度不能超过字节,如果超过会报这样的错:ERROR (): Specified key was too long; max key length is bytes。如果是UTF-8编码,相当于个字符的长度(因为UTF8一个字符占3个字节)。Oracle的索引长度限制比mysql要宽松得多。

解决办法:就不必要多说了,要么改索引的定义,要么改字段的定义长度。

二、为了数据库的兼容性我们应该注意些什么。数据库的兼容性应该是数据库设计应该重视的一个问题,因为有时候客户存在已经在用的数据库,并且不希望同时维护两个数据库,这样的话兼容多种数据库还能成为产品的一个卖点。

作到数据库的兼容性关键是遵守标准用法。

1、遵守标准用法,尽量不使用某种数据库特有的用法。

如msyql的‘`'符号的用法,再比如,很多人有这种用法,在使用oracle开发的时候创建sequence,往表中插数据之前先SELECT seq.nextval FROM DUAL;,然后把查询得到的值作为value插入表中,这种用法没法适应没有sequence的数据库,每个数据库都有自动增长型的用法,如果需要使用就应该完全地使用。再举个例子,不同的数据库对分页查询作了扩展,postgresql有offset,limit,oracle就没有。

2、保留字。

要求数据库设计者尽量不使用保留字作表名和字段名。也有很多人有这种用法,在表名和字段名前加‘_',像这样:create table _tablename ( _id integer)。这样永远不会出现保留字引起的问题。

3、避免数据库大小写敏感的问题。

选择数据库表名和字段名采用大写还是小写,并且在数据库的设计和编码过程中完全统一。当使用 Convert Oracle to Mysql 工具时,请注意“名称转换为大写”这个选项的控制。

标签: mysql数据库数据迁移

本文链接地址:https://www.jiuchutong.com/biancheng/349241.html 转载请保留说明!

上一篇:使用mysqldump实现mysql备份(mysqldump命令在哪里执行)

下一篇:My Sql 1067错误与编码问题的解决方案(sql1068错误)

  • 设在西部地区的鼓励类产业企业减按15%怎么填
  • 一般纳税人可以开1%的发票吗
  • 社保公司部分交多少比例
  • 市政押金无法收回的损失可以税前扣除吗
  • 免抵退税额为什么等于出口价乘以退税率
  • 以前年度少计提费用
  • 企业发生劳动仲裁还可以进行融资吗
  • 股东溢价转让股份交易市场会计分录
  • 简易计税项目的分包款为建筑服务劳务费,可以扣除吗
  • 支付税点怎么做账
  • 钉钉报销费用明细怎么写
  • 预收账款转为主营业务收入
  • 如何能减免个人所得税
  • 保险公司如何计算车辆折旧
  • 发票上传出现手印怎么办
  • 还在讨论“税务金四”上线?税务和银行要联手清查单位和个人账户了!
  • 个人无偿受赠房屋 个人所得税 张英泉
  • 商票背书需要对方开发票吗
  • 处置的固定资产
  • 最新消费税税目顺口溜
  • 固定资产处置计算公式
  • 用友t8怎么删除凭证
  • 以产品分成方式销售商品
  • 抵押贷款逾期怎么处理抵押物
  • 土地使用权摊销年限最新规定
  • 鸿蒙系统怎么自动填充密码
  • 微软发布新windows
  • 企业所得税计算方法公式
  • windows10出现你的电脑出现问题
  • 债权转增资本公积账务处理
  • 应收债权换入无偿收益
  • PHP:preg_last_error()的用法_PCRE正则函数
  • 出差回来报销会务费
  • 提供劳务收入怎么交税
  • 财务管理集权与分权
  • 购买轿车增值税可抵扣吗?
  • vite配置详解
  • php 解析
  • php数据库管理
  • 利息收入可以冲减开发成本的法律依据
  • 自产自销农产品免税备案取消
  • 利润分配的基本原则是( )
  • 公司出现质量问题员工怎么处理
  • 小规模纳税人的企业所得税税率
  • 小微企业报税是多久报一次
  • sqlserver批量更新存储脚本
  • SqlServer 2005 T-SQL Query 学习笔记(4)
  • 小企业销售商品时,确认收入的标志有
  • 销售退回 所得税
  • 企业间拆借资金要交印花税吗
  • 个体户超额
  • 税控盘上报
  • 收到的发票怎么做分录
  • 事业单位职工福利费计提标准和使用
  • 公交车ic卡网上充值
  • 被征用的不动产或者动产使用后应当怎样
  • mysql in如何优化
  • mysql常见故障和解决方法
  • solaris syslog
  • WP8版Creative Camera:相机详情介绍(图文)
  • Ubuntu 16.04 LTS正式发布,看看有哪些更新
  • nano linux
  • centos smb服务
  • 优化linux系统的方法
  • win8开机自启动在哪里设置
  • win10的outlook在哪
  • unity connected games
  • unity editor window
  • 简单解析空中三角测量的意义
  • 调用perl脚本
  • jquery插件怎么用到自己的网站
  • linux使用adb
  • jquery自定义组件
  • linux查看shell脚本内容
  • python 隐函数作图
  • JQuery点击行tr实现checkBox选中的简单实例
  • 国税和地税现在合并了吗
  • 如何在国税网上做企业会计制度备
  • 可以去税务局交医社保吗
  • 如何查询自己是否被起诉了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设