- 浏览: 1399680 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (346)
- linux (10)
- hbase (50)
- hadoop (23)
- java (52)
- java multi-thread (13)
- Oracle小记 (41)
- 机器学习 (12)
- 数据结构 (10)
- hadoop hive (16)
- java io (4)
- jms (1)
- web css (1)
- kafka (19)
- xml (2)
- j2ee (1)
- spring (6)
- ibatis (2)
- mysql (3)
- ext (3)
- lucene (3)
- hadoop pig (3)
- java nio (3)
- twemproxy (1)
- antlr (2)
- maven (6)
- mina (1)
- 列数据库 (1)
- oozie (2)
- mongodb (0)
- 报错 (0)
- jetty (1)
- neo4j (1)
- zookeeper (2)
- 数据挖掘 (3)
- jvm (1)
- 数据仓库 (4)
- shell (3)
- mahout (1)
- python (9)
- yarn (3)
- storm (6)
- scala (2)
- spark (5)
- tachyon (1)
最新评论
-
guokaiwhu:
赞啊!今晚遇到相同的问题,正追根溯源,就找到了博主!
hbase 报错gc wal.FSHLog: Error while AsyncSyncer sync, request close of hlog YouAr -
喁喁不止:
很清楚,有帮助。
hive常用函数 -
dsxwjhf:
Good job !!
kafka获得最新partition offset -
Locker.Xai:
参考了
freemaker教程 -
maoweiwer:
为啥EPHEMERAL_SEQUENTIAL类型的节点并没有自 ...
zookeeper 入门讲解实例 转
在下小小程序员,现在正在做oracle转向mysql,就是把oracle数据库上的所有表结构,视图,存储过程,函数,包等等等都转到mysql中,现在留下一点点记录,不对之处希望各位能够指出,也很希望一起分享你的经验:
表之间的转换,如果暂不说其中调用的函数,还是没什么问题的,因为使用的非常规类型很少
视图之间的转换出了不少问题:
oracle 支持的子表,例如:
select * from dept, (select * from emp where emp.sal>8000) where dept.id = emp.deptid
mysql不支持子表,所以较为简单的转换方法为左连表
select * from dept left emp on emp.sal>8000 where dept.id = emp.deptid
oracle 最常用的左连表 emp.deptid = emp.id(+) 的 (+)
select * from emp, (select * from dept where dept.no = 10) where emp.deptid = emp(+)
mysql当然没有这个(+),所以都要改为left join
但是mysql支持这种写法:
select * from emp left join (dept , company, province) on (emp.deptid = dept.id and emp.companyid = company.id and emp.provinceid = province.id) -- 可以简化left join写法,但是感觉上没有(+)写的方便
--------------------------------------------------------------
上边的知识虽然看似无华,单支持了mysql最大的弱点,就是试图机制不完善;不同于oracle的视图概念-优化的sql语句,mysql的查询sql语句有时是不能写在视图中的。我知识抛砖引玉,优秀的程序员应该不止单单会看懂代码滴。我是sb,这只是我的一点sb的解释。
--------------------------------------------------------------
ok,废话少说
oracle 还有一强大之处就是其分析函数,相比用过oracle的个人新老用户们,多多少少都接触过。
oracle有如下代码:
select * from (select pt.xmid,pt.xmmc,mast.dmnr,ct.KHQC ,pt.jhks ,pt.jhjs ,pt.xmzje, rank() over(partition by pt.xmid order by pt.xmbbh desc) rn from T_LPROMIS_XMGL_GBBXMXX pt,T_LPROMIS_YXGL_KHXX ct,t_lpromis_base_mast mast where pt.xmid in (select ct.xmid from T_LPROMIS_YXGL_HTXX ct) and mast.DMBH = pt.CWLX and mast.dmlb = '0114' and pt.khid = ct.id and extract(year from pt.xmjhjssj) > extract(year from sysdate)) t where t.rn = 1
这样就可以取符合条件中每个项目(pt.xmid)中版本(pt.xmbbh)最大的一条记录
而mysql中,没有如rank() dense_rank() row_number()等等这些可以带over([partition by xx][order by xx])分析函数. 但是可以用它伟而大的用户变量解决
SELECT t.xmid, t.ssbmid, t.xmmc, t.dmnr, t.KHQC, t.XMJHKSSJ, t.XMJHJSSJ, t.xmzje FROM ( SELECT t1.xmid, t1.ssbmid, t1.xmmc, mast.dmnr, ct.KHQC, t1.XMJHKSSJ, t1.XMJHJSSJ, t1.xmzje , IF ( @pro_id = t1.xmid ,@rk := @rk + 1 ,@rk := 1 ) AS rank, @pro_id := t1.xmid -- rank() over(partition by pt.xmid order by pt.xmbbh desc) rn FROM t_lpromis_base_mast mast, ( SELECT @rownum := 0 ,@pro_id := NULL, @rk := 0 ) init, ( SELECT * FROM T_LPROMIS_XMGL_GBBXMXX pt ORDER BY pt.xmid, pt.xmbbh ) t1 LEFT JOIN T_LPROMIS_YXGL_KHXX ct ON t1.khid = ct.ID WHERE t1.xmid IN ( SELECT ct.xmid FROM T_LPROMIS_YXGL_HTXX ct ) AND mast.DMBH = t1.CWLX AND mast.dmlb = '0114' and extract(year from t1.xmjhjssj) = extract(year from now()) + 1 ) t where t.rank = 1
-----------------------------------------------------------------------------------
这里再给出一些小小的tip,看之无害,也可能没用
做分页mysql 有 limited; oracle 用 rownum
时间类型mysql 有 date datetime stamptime time 等等, 而且可以直接比较; oracle 则要用 to_data取比较
oracle的函数可以返回record; mysql还没有找到可以返回对应的方法;
oracle的函数可以使用管道,返回table, 代码如下; mysql还没有找到对应方法
create type human_record_type is object(compyname nvarchar2(40),deptname nvarchar2(40));
create type human_table_type is table of human_record_type;
create or replace function get_human_resource return human_table_type pipelined as
hr human_record_type;
begin
for myrow in (select * from t_lpromis_hr_bm) loop -- loop record of data to pipe row information
hr := human_record_type(myrow.comy,myrow.dept)
pipe row(hr);
end loop;
return ;
end;
简易调用:
select * from table(get_human_resource)
----------------------------------------------------------------------------------------------------
未完
未完
发表评论
-
oracle报错 ora-14300:partition key maps to a partition outside maximum pemitted nu
2014-02-28 20:57 2025可能由两个原因造成 1.partition数量超过 ... -
oracle自动分区 (时间 数字)
2014-01-21 20:15 8928按照时间,每天分区 create table test_p ... -
oracle WM_CONCAT行转列
2013-08-03 16:01 1458Sql代码 ... -
oracle语法备忘-游标
2012-12-18 15:27 1117oracle的游标备忘 显示游标 declar ... -
oracle执行顺序
2012-10-31 16:17 1229看了一篇oracle执行顺 ... -
oracle语法备忘-循环
2012-10-26 15:50 1076oracle循环语句 loop while for 测 ... -
oracle 函数
2012-10-08 14:59 1012转 http://lwxjjgc.iteye.com/blog ... -
oracle 插入字符串
2012-10-08 14:16 3330一直都认为oracle有插入方法,可是没找到,就写了一个凑 ... -
oracle exception
2012-10-05 21:19 1263转 http://www.cnblogs.com/huyong ... -
oracle if else
2012-09-29 15:30 3856oracle中的if else if inst ... -
oracle 分页存储过程
2012-09-29 12:49 1379查询oracle时,做存储过程实现分页 c ... -
oracle 获取表,列注释
2012-09-28 16:23 2012前段时间,自己用的表好长,列好多(这是谁设计滴) 所以给自己 ... -
to_char
2012-09-27 11:34 0to_char转换数字 to_char(31 ... -
oracle 分区
2012-09-26 15:32 1066创建分区 --先声明一下:列表分区不支持多列,但是范围 ... -
oracle 语法备忘录
2012-09-26 14:15 0-- 游标 cursor object_cursor ... -
oracle 绑定变量
2012-09-26 12:48 1131不太喜欢看到在procedure用||拼接sql的语句 所以 ... -
jdbc insert数据后获取ID
2012-09-20 16:21 4500有时insert数据,数据ID为自动生成,需要获取ID。 ... -
Oracle生成uuid
2012-09-20 09:22 0select sys_guid() from dual; ... -
oracle 实现自增auto_increament
2012-09-19 12:53 1390在mysql中,实现字段自增,只用给他设置为auto_incr ... -
jdbc 报错 - 索引中丢失 IN 或 OUT 参数:
2012-09-19 12:45 5478jdbc 报错 - 索引中丢失 IN 或 OUT 参数: ...
相关推荐
《通用数据库转换工具:礼光、新德利与欧凯的智慧结晶》 在信息化高度发展的今天,数据已经成为企业...通过安装并使用通用数据库转换工具(礼光-新德利-欧凯).exe文件,用户可以亲自体验这一强大工具带来的便利和高效。
这一款绿色版的自动生成工具(解压打开Java代码生成工具2.0.exe即可), 可以自动读取数据库表,勾选程序中需要操作的的表,自动生成一个struts1+spring...支持oracle、mysql、db2、sqlserver 操作简单遍历,大家可亲自体验。
- **数据库组件**:包括数据库连接组件、数据访问组件,支持多种数据库系统,如SQL Server、Oracle、MySQL等,使得数据库操作更加简便。 - **Web和移动开发组件**:针对现代跨平台开发需求,TMS提供了HTML5控件、...
通过"fr_studio_demo.exe"这个文件,用户可以下载并安装Fast Report的演示版,亲自体验其强大的报表设计和开发能力。在实际使用过程中,用户可以根据需求选择是否购买完整版本,以获取更多专业特性和服务支持。 总...
具体更新内容需参考官方发布说明或通过安装该版本后亲自体验。 总而言之,DbVisualizer作为一款多平台、多功能的数据库管理工具,无论对于数据库管理员还是开发人员来说,都是日常工作中不可或缺的利器。通过其强大...
- 数据库管理:MySQL或Oracle等关系型数据库存储用户信息、菜品数据和订单记录。 - Servlet:作为JSP和服务器之间的桥梁,处理HTTP请求,调用后台服务。 - JavaScript和AJAX:增强前端交互,如异步加载数据,无需...
FastReport是一款强大的报表设计和开发工具,主要用于.NET Framework环境下的应用程序。...通过"FRNetDemo2017.2.msi"安装文件,用户可以亲自体验和学习FastReport的强大功能,进一步提高开发效率。
MyEclipse除了基本的Java开发功能外,还支持其他技术,如Spring、Hibernate、Struts等,以及对Oracle、MySQL等数据库的集成。因此,这个汉化包的应用不仅限于基础的编码工作,也覆盖了整个开发流程。 至于压缩包子...
标题中的“数据库下载”指的是获取并安装用于存储和管理数据的软件系统,常见的数据库系统有MySQL、Oracle、SQL Server等。这些数据库系统是信息化建设的重要组成部分,帮助企业或组织存储、检索、更新和管理大量...
通过解压并运行这些文件,你可以亲自体验和比较不同导入方法的速度差异,例如百万条数据在一秒钟内完成导入。 总之,批量导入数据和大数据导入是IT领域的核心技能,掌握这些技术可以帮助我们有效地管理和分析海量...
**dbfound演示环境详解** dbfound,一个在IT行业中逐渐崭露头角的神器,尤其在数据库管理和开发领域,它以其独特的功能和高效...如果你还没有尝试过dbfound,那么不妨下载这个演示环境,亲自体验一下它带来的改变吧!
这些程序可能是用于数据查询、存储过程、触发器或者事务管理的示例,它们让你能亲自体验数据库的运行机制。同时,"包含范文"可能是指提供了一些参考案例或模板,帮助你在设计数据库时有明确的方向和指导。 在文件...
可能是使用MySQL、Oracle或SQL Server等关系型数据库管理系统(RDBMS),通过Java Database Connectivity(JDBC)API与数据库进行通信。 4. **MVC设计模式**:Model-View-Controller(模型-视图-控制器)是Web应用...
- **预备知识**:第一章涵盖Tomcat服务器的安装与使用、WebLogic的应用、MySQL和Oracle数据库的操作,以及JCreator集成开发环境的使用,为后续项目开发奠定坚实的基础。 - **飞达商贸有限公司POS系统案例**:第二...
2. 数据库:MySQL或Oracle,用于存储用户信息、消费记录等数据。 3. 前端界面:HTML/CSS/JavaScript为基础,可能结合Bootstrap或Vue.js等前端框架,提升用户体验。 4. 服务器:如Tomcat或Jetty,作为Java Web应用的...
2. **数据库管理**:可能使用MySQL、Oracle或SQL Server等数据库管理系统存储酒店的各项数据,如客户信息、房间状态、订单记录等。 3. **前端UI**:采用HTML5、CSS3和JavaScript(可能结合React、Vue或Angular等...
3. **数据库设计**:网上考试系统需要存储题目、选项、考生信息、成绩等大量数据,因此会涉及到数据库设计,如MySQL或Oracle。可能包括用户表、试题表、答案表、考试记录表等多个数据库表的创建和管理。 4. **...
3. **数据库管理**:系统需存储学生的个人信息、报考课程、缴费情况等数据,因此需要一个可靠的数据库管理系统,如MySQL、Oracle或SQL Server,用于存储、检索和更新数据。 4. **安全性**:考虑到涉及个人信息,...
通常会使用MySQL或Oracle等关系型数据库管理系统来存储用户信息、宠物信息以及预约记录等数据。数据库设计包括实体关系模型(ER模型)的建立,表结构的设计,以及SQL查询语句的编写。这些都直接影响到系统的性能和...