oracle转mysql总结经验,oracle转mysql总结(转)

ares-sdk初始开发测试使用的是oracle数据库,由于宁波通商的特殊需要,必须把数据库环境从oracle转向mysql。 现对转换过程中出现的问题及经验总结如下:

主键生成策略

创建一个专门记录序列的表sequence,记录有当前序列号,序列的间隔如+1

创建记录当前序列的表

DROP TABLE IF EXISTS sequence;

CREATE TABLE sequence (

name VARCHAR(50) NOT NULL,

current_value INT NOT NULL,

increment INT NOT NULL DEFAULT 1,

PRIMARY KEY (name)

) ENGINE=InnoDB;

INSERT INTO sequence VALUES (‘MovieSeq‘,3,5);

创建一个获取当前序列的function

DROP FUNCTION IF EXISTS currval;

CREATE FUNCTION currval (seq_name VARCHAR(50))

RETURNS INTEGER

CONTAINS SQL

BEGIN

DECLARE value INTEGER;

SET value = 0;

SELECT current_value INTO value

FROM sequence

WHERE name = seq_name;

RETURN value;

END;

获取下一个数值..先在sequence里面调用update当前最大数值+1然后再调用currval获得当前数值

DROP FUNCTION IF EXISTS nextval;

DELIMITER $

CREATE FUNCTION nextval (seq_name VARCHAR(50))

RETURNS INTEGER

CONTAINS SQL

BEGIN

UPDATE sequence

SET current_value = current_value + increment

WHERE name = seq_name;

RETURN currval(seq_name);

END$

DELIMITER ;

DROP FUNCTION IF EXISTS setval;

DELIMITER $

CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER)

RETURNS INTEGER

CONTAINS SQL

BEGIN

UPDATE sequence

SET current_value = value

WHERE name = seq_name;

RETURN currval(seq_name);

END$

DELIMITER ;

如果以上语句执行有异常请先执行这句:set global logbintrustfunctioncreators=TRUE;

插入时的主键生成:

mysql: SELECT MMC.NEXTVAL(‘SEQ_MD_ENTITY_ATTRIBUTE‘)

oracle: select MMC.SEQ_MD_ENTITY_ATTRIBUTE.nextval from dual

日期处理

mysql : DATE_FORMAT(NOW(),‘%Y-%m-%d %H:%i:%s‘)

oracle: TO_CHAR(SYSDATE,‘YYYY-MM-DD hh24:mi:ss‘)

nvl函数

mysql: ifnull(A.USER_KPI,0)

oracle: NVL(A.USER_KPI,0)

to_number

oracle 的 to_number

mysql不需要

关键字、保留字

涉及到关键字,mysql关键字需要加上``号

mysql: PARA_VALUE as `KEY`

oracle : PARA_VALUE as KEY

rownum

Unknown column ‘rownum‘ in ‘where clause‘

oracle自定义sql中如果使用了rownum=1 mysql中可以写成limit 1

大小写问题

在oracle中一般情况下不区分大小写

但在MySQL中,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。

解决的办法是把mysql的数据库名和oracle的大小写保持一致,

表名与应用程序中sql字符串中的表名保持一致,

如果应用程序中字段名用了双引号,那请把sql中的字段名大小写与双引号里的字符保持一致。

如果你的应用程序所引用的表名、字段没有统一大小写,那麻烦就大了。

字符串截取

mysql:

截取log_data从逗号开始之后的字符:

SELECT substring_index(log_data,‘,‘,-1)

FROM nbts.log where event_id=‘150002‘ and log_id =‘a2a421734c7e47dd8a8b‘;

截取log_data从逗号开始之前的字符:

SELECT substring_index(log_data,‘,‘,1)

FROM nbts.log where event_id=‘150002‘ and log_id =‘a2a421734c7e47dd8a8b‘;

oracle :

截取log_data从逗号开始之后的字符:

SELECT SUBSTR(log_data, INSTR(log_data, ‘,‘, 1, 1) +1) AS app_ver_id

FROM nbts.log where event_id=‘150002‘ and log_id =‘a2a421734c7e47dd8a8b‘;

截取log_data从逗号开始之前的字符:

SELECT SUBSTR(log_data,0,INSTR(log_data, ‘,‘, 1, 1) - 1) AS app_ver_id

FROM nbts.log where event_id=‘150002‘ and log_id =‘a2a421734c7e47dd8a8b‘;

字符串格式化

mysql:CONCAT

oracle:TO_CHAR

主键长度问题

在迁移到mysql后可能会出现主键长度太短,需要增加长度。

http://www.cnblogs.com/kunpengit/p/4462656.html

原文:http://www.cnblogs.com/softidea/p/5309299.html

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

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

相关文章

vue 顶级组件

快 有时候懒的把一些通用组件写到 template里面去,而业务中又需要用到,比如表示 loading状态这样组件。如果是这样的组件,可以选择把组件手动初始化,让组件在整个app生命周期中始终保持活跃。 如: // a.js import Vu…

2018-2019-2 网络对抗技术 20165329 Exp 8 Web基础

2018-2019-2 网络对抗技术 20165329 Exp 8 Web基础 原理与实践说明 实践内容概述基础问题回答实践过程记录 1.Web前端:HTML2.Web前端:javascipt3.Web后端:MySQL基础4.Web后端:编写PHP网页5.最简单的SQL注入,XSS攻击测试…

为JVM分配内存:一个案例研究

这篇文章是关于最近的性能调整练习的。 与往常一样,这些开始于关于症状的模糊表述。 这次,魔鬼采取了“应用程序速度慢,我们无法访问源代码的形式。 我们有什么改善情况的选择”。 对该应用程序进行仔细研究后发现,它由捆绑在一起…

洛谷P4822 冻结

题目描述 “我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„” 在这个愿望被实现以后的世界里,人们享受着魔法卡片(\(SpellCard\…

Vue基础指令集锦

v-model双向绑定数据 <input type"text" v-model"msg"> {{msg}} ###v-on 事件 <div id"box"><button v-on:click"say">按钮</button><button click"say">按钮</button> </div>…

oracle删除实体,oracle 按条件删除、查询表

---查询表的名称&#xff0c;字段信息以及字段注释selectus.table_name, --表名ut.COLUMN_NAME,--字段名称uc.comments,--字段注释ut.DATA_TYPE,--字典类型ut.DATA_LENGTH,--字典长度ut.NULLABLE--是否为空from user_tab_columns utinner JOIN user_col_comments ucon ut.TABLE…

Thymeleaf与Spring集成(第2部分)

1.简介 这是Thymeleaf与Spring教程集成的第二部分。 您可以在此处阅读第一部分&#xff0c;在那里您将学习如何配置该项目。 如本教程第一部分开头所述&#xff0c;Web应用程序将发送两种类型的请求&#xff1a; 插入新访客&#xff1a;将同步请求发送到服务器以添加新访客。…

数据结构(一)

1.数据结构---数据在计算机中的存储和组织。 物理结构&#xff1a;线性存储和链式存储。 逻辑结构&#xff1a;数据的关系和联系&#xff0c;线性结构和非线性结构&#xff08;树一对多&#xff0c;前继&#xff0c;后驱&#xff09;。 数据结构和算法是伴生的&#xff0c;算法…

Vue实例和生命周期

创建一个Vue实例 每个Vue应用都是通过Vue函数创建一个新的Vue实例开始&#xff1a; var vm new Vue({//选项 }) 数据与方法 当一个Vue实例被创建时&#xff0c;它向Vue的响应式系统中加入了其data对象中能找到的所有属性。当这个属性的值发生变化时&#xff0c;视图将产生…

boid模型的Matlab程序,动物集群运动行为模型系列之五-—本科毕业设计.doc

动物集群运动行为模型系列之五-—本科毕业设计动物集群运动模型摘要本文主要模拟了鱼群的集群运动、鱼群躲避捕食者追捕的运动情况以及鸟群觅食运动的模拟&#xff0c;以此研究动物个体间的信息传递机制&#xff0c;同时也是对群体智能的初步探索。针对问题一&#xff0c;需要我…

【 jquery 】常用

$("#input1").show(slide); 渐进显示$("#input1").hide(slide); 渐进隐藏 siblings() 方法返回被选元素的所有同级元素 $("#family_name_pinyin").val(arr[0].replace(" ", "")).siblings("span").hide();…

我们正在破解JDBC,因此您不必

我们喜欢使用JDBC 没人说。 曾经 更严重的是&#xff0c;如果考虑一下&#xff0c;JDBC实际上是一个非常出色的API。 这也可能是Java成为当今流行平台的原因之一 。 在JDK 1.1 之前 &#xff0c; 以及在ODBC之前 &#xff08;这已经很久了&#xff09;&#xff0c;很难想象有任…

python之requests

转载:https://www.cnblogs.com/zhangxinqi/p/9201594.html 阅读目录 1、requests简介2、requests的安装3、requests请求4、请求响应5、requests异常处理6、cookies7、请求会话(Session)8、SSL证书验证9、代理设置10、身份认证11、编码12、其他说明1、requests简介 requests是通…

vue 项目白屏解决方案

在做的项目是使用 vue-cli 脚手架为基础的&#xff0c;只能使用微信浏览器打开的。在某次更新功能代码后&#xff0c;被反馈在一些手机上会出现白屏。经过一番探索&#xff0c;多管齐下解决了问题白屏可能的原因&#xff1a; es6 代码没有被编译成 es5 &#xff1b;文件打包路…

php如何清理网站缓存,php怎么清除opcache缓存

php清除opcache缓存的方法&#xff1a;1、开发环境中修改php.ini文件&#xff0c;将“opcache.revalidate_freq”的值改为1&#xff1b;2、在线上环境中&#xff0c;可以在PHP文件中执行“opcache_reset();”代码&#xff0c;重启web服务器。本教程操作环境&#xff1a;windows…

ActiveMQ中的温度,存储和内存使用百分比

为了有效使用ActiveMQ&#xff0c;了解ActiveMQ如何管理内存和磁盘资源以处理非持久性消息和持久性消息非常重要。 ActiveMQ具有三个关键参数&#xff0c;需要对其进行检查。 临时使用百分比 这是已用于假脱机非持久消息的已分配磁盘存储的百分比 非持久性消息是无法在代理重…

Python 爬虫之 Scrapy 分布式原理以及部署

Scrapy分布式原理 关于Scrapy工作流程 Scrapy单机架构 上图的架构其实就是一种单机架构&#xff0c;只在本机维护一个爬取队列&#xff0c;Scheduler进行调度&#xff0c;而要实现多态服务器共同爬取数据关键就是共享爬取队列。 分布式架构 我将上图进行再次更改 这里重要的就是…

【解决】ERROR in xxx.js from UglifyJs

当我们运行打包脚本 npm run build或者打包ios weexpack build ios有可能会遇到以下报错ERROR in index.js from UglifyJs![](https://img2018.cnblogs.com/blog/1504257/201811/1504257-20181102141127347-447538002.png) 这是因为webpack在打包vue文件时没有成功转换ES6的语法…

linux 给文件添加用户名和密码是什么格式,linux成批添加用户的命令

当我们遇到教学这类情况时我们需要批量添加学生用户&#xff0c;纳闷怎么才能做到成批添加用户呢?下面由学习啦小编为大家整理了linux成批添加用户命令的相关知识&#xff0c;希望大家喜欢!linux批量添加用户命令——newuserslinux批量添加用户流程&#xff1a;批量添中用户流…

JS线程与事件循环解析

JS是单线程&#xff0c;JS代码从上到下依次执行&#xff0c;但是单线程有一个非常大的问题&#xff0c;遇到耗时的任务&#xff0c;后面的任务只能等待它执行完&#xff0c;才能接着执行。比如ajax请求&#xff0c;从服务器上获取数据&#xff0c;本身是耗时的&#xff0c;如果…