mysql换成oracle_从mysql转换到oracle数据库

最近做了几个项目,我对项目的要求(有些也是客户的要求)都是既要能用mysql数据库,又要能用oracle数据库,开发时尽量用mysql,等到发布时要求两者都能适应。因为两种数据库还是许多具体的应用有些不同,而我们开发中采用的技术又有各种,所以基本上都是采用手动去转换,具体转换过程如下:

一、分表结构及表数据两次导出。一次导出去转换之后导入oracle中比较麻烦,所以我们一般在mysql导出时将导出分成个结构及个数据两次导出。导出之后将个结构语句修改,具体修改如下:

二、对表的修改:

0、去掉`,`这个是mysql的特殊标示符,转换前要去掉

1、将所有的text替换成varchar2(4000)。有些转换工具将text是转换成blob或clob,我觉得那样不好,一般还是转换成varchar2(2000)或varchar2(4000)比较好。虽然采用spring或oracle10g可以clob当作string去处理,但是我觉得一般情况下还是转换成varchar2比较好,如果字段内容确实需要更长(varchar2最长是4000),在这种情况下采用clob就比较好了。

2、将所有的varchar替换成 varchar2 。

3、将tinyint(1)替换成number(1)。

4、将int(4)替换成number(4)。

5、去掉auto_increment选择项。oracle中没有自增属性,所以要去掉。

6、将NOT NULL default ''替换成default '' NOT

NULL。关键是这两个的顺序不能错,也不知道为什么,实际中总结出来的。

7、将ON DELETE CASCADE ON UPDATE CASCADE替换成ON DELETE CASCADE ON

UPDATE CASCADE。

8、将外键前的KEY cq_formid (cq_formid)去掉。

9、将CONSTRAINT 0_99 FOREIGN改成CONSTRAINT fk_99 FOREIGN。

10、将mediumblob转换成blob。

11、将所有非主键的not null去掉。

12、将外键全部移到最后(在数据导完之后再执行)。

三、对数据修改:

0、去掉`,`这个是mysql的特殊标示符,转换前要去掉,在做个结构转换时也要去掉。

1、\'替换成''。\为mysql的转义字符,而oracle的转义字符为单引号。

2、 替换成 。这种是在执行sql插入语句一些特殊字符被oracle当做参数,这种我还没有找到好的处理方法,一般就还是输入相应的字符吧。有谁知道更好的处理方法可以告诉我一下。

3、,'',替换成,''''。这也是需要转义引起的。

在程序处理中mysql与oracle数据库还有些具体的不同,具体的不同情况如下:

mysql与oracle的不同:

1、mysql自动增量。oracle中没有自动增量,一般采用序列去实现类似功能,但是需根在程序中特殊处理(采用hibernate时不需要特殊处理)。

2、limit。在mysql中一般采用limit去实现分页功能,而oracle中一般采用rownum去实现分页。

3、date。两种数据库对date的处理也不一样,mysql中更加灵活吧。

4、LEFT函数。oracle中没有相同的函数,我一般自定义一个left函数去实现mysql相同的功能,那样就不用去修改程序了。

oracle中增加:

create or replace function LEFT(String1 in varchar2, pos in

integer)

return varchar2 is

begin

return(substr(String1, 0, pos));

end LEFT;

/

5、空与空串。mysql中空与空串是两个不同的东西,而在oracle中将null与空串做了同样的处理,这也是在程序中需要注意的于方。

6、rs.isLast()。当数据库为mysql在Connection.prepareStatement(str1);可用,而在oracle中必须Connection.prepareStatement(str1,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)才能使用rs.isLast(),一般两种情况都采用后面的就可以了吧。

7、在oracle中update fieldsdisplaymode f set

f.fdm_displaycontent=Translate(f.fdm_displaycontent,'\'',''''

);这是将insert语句中的\'全部替换成'',还是一种语义的转换。

8、sysdate。在mysql中采用sysate()而在oracle中采用的是sysdate,两个稍有不同,也可以在oracle中定义函数去处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬件知识:视频分配器、画面分割器、矩阵、延长器相关知识介绍

目录 1、视频分配器 2、视频切换器 3、视频矩阵 4、画面分割器 5、延长器 你知道视频分配器,画面分割器,矩阵各自的作用都是什么吗?今天小编就为大家详细的介绍下它们各自的区别。 1、视频分配器 视频分配器是一种把一个源平均分配成多路视频…

UnityShader之Shader分类篇【Shader资料2】

关于ShaderLab,从我个人的理解上来看应该是分为三种类型。 1、Fixed function shader 固定渲染管线Shader,基于用于高级Shader在老显卡无法显示时的Fallback,使用的是ShaderLab语言,属于真正的ShaderLab语言,和我们平时…

mysql 交叉连接_MySQL教程77-CROSS JOIN 交叉连接

之间所讲的查询语句都是针对一个表的,但是在关系型数据库中,表与表之间是有联系的,所以在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。在 MySQL 中,多表查询主要有交叉连接、内连接和外连接…

python web django base skill

web框架本质 socket 业务逻辑框架实现socket tonado node.js 使用WSGI实现socket django flask 自己实现框架思路 wsgiref socket 路由系统 自己写逻辑(views) jinja2 模板引擎(templates) 实现动态页面,修改返回给浏览器的字符串 去…

电脑常见的VGA、DVI、PS/2、USB等接口知识笔记

我们经常见到电脑和网络设备上都少不了VGA、DVI、PS/2、USB等常用接口,那些接口里面有多个针脚,他们每个针脚都有自己的用途,今天电脑学习小编就带大家一起看看这些接口神秘用途。 现在很多朋友们可能会遇到VGA线或HDMI线不够长,或…

mysql kill_Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)

在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL命令的语法格式如下:KILL [CONNECTION | QUERY] thread_id每个与mysqld的连接都在一个独…

数据库:MySQL、HBase、ElasticSearch三者对比

1、概念介绍 MySQL:关系型数据库,主要面向OLTP,支持事务,支持二级索引,支持sql,支持主从、Group Replication架构模型(本文全部以Innodb为例,不涉及别的存储引擎)。 HBas…

mysql 附加数据库文件_mysql附加数据库文件

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

SpringBoot集成Mybatis用法笔记

今天给大家整理SpringBoot集成Mybatis用法笔记。希望对大家能有所帮助&#xff01;搭建一个SpringBoot基础项目。具体可以参考SpringBoot:搭建第一个Web程序引入相关依赖<dependencies><dependency><groupId>org.springframework.boot</groupId><ar…

wifi-mac

//18:a6:f7:12:0b:8b //18:a6:f7:1e:a9:57 //18:a6:f7:1f:8e:69 //18:a6:f7:12:0b:9c //18:a6:f7:1f:cd:d4 //18:a6:f7:1c:94:35 转载于:https://www.cnblogs.com/mayidudu/p/5991781.html

网络知识:交换机中的半双工与全双工知识笔记

今天小编给大家分享一下交换机中半双工与全双工相关知识&#xff0c;希望对大家能有所帮助&#xff01; 早期的网络设备HUB&#xff08;集线器&#xff09;就是半双工&#xff0c;目前基本没有人用了&#xff0c;而现在用的SWITCH&#xff08;交换机&#xff09;就是全双工。 a…

yum 安装mysql 启动_linux(centos6.9)下使用yum安装mysql,及启动MySQL等

查看系统自带的mysql版本&#xff1a;rpm -qa | grep mysql卸载mysql&#xff1a;rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps1. 安装mysql 服务器端&#xff1a;yum -y install mysql-server mysql-devel2. 安装mysql客户端&#xff1a;yum install mysql3. 启动mysql服…

硬件知识:U盘插入电脑没反应相关解决办法整理

目录 一、U盘可能被隐藏 二、USB端口被BIOS禁用 三、电脑的USB驱动可能有问题 今天小编给大家介绍一下U盘插入电脑没反应相应的解决方案&#xff0c;希望对大家能有所帮助&#xff01; 一、U盘可能被隐藏 首先换台电脑看看是不是U盘损坏的问题&#xff0c;如果不是&#xff0c;…

分享9个实用的电脑维修技巧,赶紧收藏吧

目录 01、电脑不能上网 02、电脑蓝屏 03、没有声音 04、没有画面 05、软件无法启动 06、显示器画面不能满屏显示 07、使用过程中自动关机 08、电脑不能开机 09、电脑花屏 今天给大家分享9个实用的电脑维修技巧&#xff0c;赶紧收藏吧&#xff01; 01、电脑不能上网 常见原因1&a…

自媒体资源:分享8个免版权视频素材网站

目录 01. 知鱼素材 2、 gaiamount 3、 lifeofvids 4、Coverr 5、stock footage 6、vidsplay 7、Pixabay 8、Pexels 今天小编就给大家分享一些免版权的视频素材网站&#xff0c;有需要的小伙伴赶紧欢迎收藏&#xff01; 01. 知鱼素材 https://sucai.zhiyu.art/video 共享协议可免…

win7 mysql msi_windows下的Mysql安装与基本使用(msi)

本文针对mysql5.6与5.5一、其他版本与安装方式1.msi(mysql5.7及以上版本参考&#xff1a;https://www.cnblogs.com/zjiacun/p/6653891.html)这里我们用msi吧&#xff0c;只是单纯练习的话&#xff0c;简单很多二、msi安装(5.5-5.6)1.点击安装文件&#xff0c;在出现的安装向导上…

java中split以“.“ 、“\“、“|”分隔

今天项目里遇到以"." 、"\"、“|”分割字符串&#xff0c;直接用"." 、"\"、“|”无法分割&#xff0c;因为"." 、"\"、“|”是特殊字符&#xff0c;需要转义&#xff0c;"\\." 、"\\\"、“\…