Oracle和MySQL的数据导入为何差别这么大_oracle

来源:脚本之家  责任编辑:小易  

1. Oracle是大型2113数据库而Mysql是中小型数据库,5261Oracle市场占有率达40%,Mysql只有20%左右,同4102时Mysql是开源的而Oracle价格1653非常高。2. Oracle支持大并发,大访问量,是OLTP最好的工具。3. 安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。4.Oracle也Mysql操作上的一些区别①主键Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。②单引号的处理MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。③翻页的SQL语句的处理MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80④ 长字符串的处理长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。⑤空字符的处理MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。⑥字符串的模糊比较MYSQL里用 字段名 like '%字符串%',ORACLE里也可以用 字段名 like '%字符串%' 但这种方法不能使用索引, 速度不快。⑦Oracle实现了ANSII SQL中大部分功能,如,事务的隔离级别、传播特性等而Mysql在这方面还是比较的弱,前言2113  之前搭建了一个extjs+spring+oracle的这样一个报表系统5261的框架。因为其他部门4102的要求,也需要这个framework进行一1653些特殊的定制。  但是有一个问题是oracle的数据库是需要收费的,个人使用倒没什么问题,公司使用的话就会有侵权的问题了。  而mysql则是完全免费的。  所以使用extjs+spring+mysql这样的组合应该就没什么问题了。  理论上来说,mysql已经被oracle收购,这两者之间的migrate应该比较容易,但实际的迁移还是有一些问题,以下就说一说一些实现的方式和问题。  方式一:手动方式导入导出  手动的方式导入,就是操作步骤会比较繁琐一些。  对table的结构和数据:  1.使用sqldeveloper把oracle的table的schema和data(.sql和.xls)导出2.使用mysql的workbench创建table和导入数据。  这里语法上会稍微有一些不同,所以需要略微做一些调整。  对于view来说,特别是复杂的有子查询的oracleview说,要导入到mysql看起来就不是那么容易了。  方式二:使用工具navicat进行导入  navicat,这是mysql官方网站上有人建议使用的工具。这是一个收费的软件。目前的收费是1000到1600人民币。但是可以免费试用一个月。  下载安装后,启动的页面如下:  迁移的流程如下:  1.新建数据库的连接  建立需要迁移的oracle和mysql的数据库连接。  另外,建立oracle连接的时候还需要下载一个oci.dll的文件。  下载地址:  下载之后,解压到某个目录:  在navicat的工具-->选项下做类似如下设置:  instantclientoptions.jpg  细部可以参见:  完成设置后,重启navicat  2.设置过连接之后,接下来就可以进行表和数据的migrate了点击:工具--》数据传输  在"常规"的标签页中设置需要migrate的连接在“高级”的标签页中,设置需要migrate哪些具体的内容:  配置完成之后,点"开始"就可以了。  基本上:对于table的结构和数据的迁移的话,基本上没什么问题。  但是对于view的导入,因为mysql的view的语法不能有子查询语句。  在navite上,可以看到从oracle导入到mysql的时候,view的checkbox不能选取。  方式三:使用工具dbmover的oracletomysql进行导入dbmover这个网站也提供了oracle到mysql迁移的工具。  下载地址是:  这也是一个收费的软件,试用版的限制是:允许迁移的记录条数累计为10万条。  下载安装,启动后会先要求输入数据库连接的信息:  一直配置完成之后的页面是:  这里就只能看到table了。  和navicat比较起来,感觉这个显得简单,只能migratetable,而且使用上也不是很方便。  下一次migrate又得重头到尾输入一次,没办法记住之前配置的连接。  方式四:使用工具intelligent-converters的oracle-to-mysql进行导入同样是一个收费的工具:  下载地址:  使用版的限制是每个table只能导入5笔数据。  操作方式上和dbremover提供的很类似。好处是能记住上次的一些连接信息。  同样只能对表进行导入。  导入的页面:www.zgxue.com防采集请勿采集本网。

经常会有一些朋友咨询我一些数据库的问题,我注意到一个很有意思的现象,凡是数据导入的问题,基本上都是Oracle类的,MySQL类的问题脑子里想了下竟然一次都没有。

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积孝速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网

我禁不住开始思考这个未曾注意的问题:

在PL/SQL中把一个表的数据select *出来,按alt+end; 然后然后右键那张表貌似mysql不能用。 复制到excel,然后就有一个excel,然后打开excel,删掉第一列就好了。 如何将MySql数据导入至Oracle中? 一、将表中数据导入文本文件保存。 我是在WIN

为什么Oracle导入数据会碰到很多的问题?

请问下mysql和oracle的区别: 1、价格 价格是两个数据库之间最显着的差异。Oracle有一个名为Oracle Express Edition的东西,这个版本完全免费。不幸的是,该版本对这些功能有太多限制。如果你继续购买全功能标准版或企业版,它将花费你数万美元

我们来梳理一下这个问题,分别从导出导入的方式来聊聊。

1、 运行MySQL Migration Toolkit,一路“Next”到“Source Database”,在Database System中选择Oracle Database Server,如果第一次使用会告之要求加载驱动程序ojdbc14.jar。 加载驱动程序之后,界面将变成如下的形式,在其中填写Oracle数据库的连

首先Oracle导出的文件格式就没打算让你拿来即用,导出文件叫做dump,换句话说可以理解这是一个二进制文件。当然实际上这个文件还是有很多的方式去抓取一些关键的信息,比如dump头部的信息可以通过strings来解析得到,我甚至在多年前碰到一个比较棘手的问题,DBA直接vim修改dump文件,这个操作风险和成本是比较高的。

7) mysql的group by 语句可以select 没有被分组的字段,如 select id,name,age from A group by age 这样 但是在orcale和sqlserver中是会报错的。这个取出的id,name所在的行是每个分组中的第一行数据。 8)orcale用decode()来转换数据,mysql,sql

导出有哪些工具呢,主要有exp,expdp这两个工具,expdp的导出性能相对来说可以更加充分利用系统资源,导出的效率更高。exp相对来说对于一些小表还是比较省事的,expdp的导出是基于服务端模式的,也就是你需要做一些数据库层的配置才可以,这无疑增加了一些技术门槛。

不知道大家注意到一个问题没有,那就是Oracle提供了SQL*Loader的工具导入,但是却没有一直提供一种简单有效的导出csv的工具,在导出的时候算是各路英雄汉使尽各种技艺,结合数据字典,结合文本过滤来完成。

MySQL的导出方法相对比较简单,设计思路很有意思,导出的文件就是可以直接打开,可以直接修改的SQL文件。这个设计在很多应用场景中简直绝了,对于开发同学是非常友好的。

导出工具原生的有mysqldump,新版本的是mysqlpump(总体感觉性价比不是很高),当然还有一些补充的第三方工具,比如mydumper之类的。

所以导出这件事情,对于开发同学本身是有一个门槛的,而且在隔行如隔山的情况下,很多同学使用expdp导出的时候都一头雾水。从安全性来看,这个二进制文件是原汁原味的,从灵活性来看,MySQL基于SQL文本的方式是比较便捷。

导出的部分其实不是最主要的,产生隔阂最大的是导入的部分,也是提出问题最多的。

MySQL有什么数据导入工具,可以理解没有,就是SQL文本,你想怎么执行都可以。包括工具mysqldump,mysqlpump导出的文件都是如此,mydump有个配套的myloader算是一个小小的例外。

Oracle有什么导入工具,有,而且是配套的,exp对应imp,expdp对应impdp

常见的数据导入问题有:

1)提示用户创建失败,导入失败

2)提示表空间不存在,导入失败

3)导入时如果创建的数据文件空间不足,导入失败

4)导入时的用户权限不足,导入失败

所以我要导入一个dump文件,如果是exp导出的,解析成本还算低一些。

而如果是expdp导出的,通常很多开发同学都会一脸懵逼。

1)导入要输入一个目录,什么是目录,不是系统目录吗?

2)如果数据库用户已经存在,已经存在10张表,导入的时候默认会直接忽略这10章表,除非你手工删除或者选择额外的选项,比如replace或者truncate等。

3)表空间源端和目标端环境不一致,要想知道到底有哪些表空间不一致,解析dump文件实话说不是很方便,有一个高级选项是remap_tablespaces

4)数据导入之后,业务同学发现有些表还是访问不了,不好,需要重新分配下权限。

通常来说,如果要导入一个dump,在Oracle侧其实是一件很严肃的事情,我们需要创建目录:

create directory dump_data as '/data/dump_data';

grant read,write on directory dump_data to xxxx;

配置表空间存储,有哪些表空间,哪些表空间需要映射,在数据导入之前,这些信息其实是不好提取的。我通常采用的方式是做下预导入,就是找个干净的环境,然后默认选项导入,看看哪些表空间报错,哪些用户报错,把这些信息提取出来,然后重新拼接一个导入命令。

在这个基础上我去构建相关的表空间和数据文件的细节。

对于数据文件,我不大喜欢自动扩展的方式,而是喜欢预创建出来,然后加上自动扩展。

最后就是文件导入

impdp system/xxxx directory=dump_data dumpfile=test.DMP logfile=impdp_test.log remap_tablespace=TEST_DATA1:DATA,TEST_DATA2:DATA,TEST_INDEX1:IDX,TEST_INDEX2:IDX

对于Oracle DBA来说,这应该是再正常不过的事情了,而且有很多地方要做到细致周到的多,但是这样一个过程对于一个外行来说,成本就很高了。

总是有一种感觉,Oracle就像汽车里面的宝马一样,操控性很好,提供了很多专业有效的管理方式。

而Oracle的角色通常都是百GB起,TB上下,这样的数据量管理,就得适配出各种工具特点和特性。我觉得这些工具一直在追求的是更加高效和安全,可能从这个角度理解,Oracle的维护管理模式是需要专人来完成的。

MySQL的管理方式很适合互联网这种变化快,而且数据量相对要小一些的环境。在易用性和学习门槛方便简直是做到了极致,比如你要到处一些有特色的insert语句(比如按照主键排序,显示完全列名等),都可以通过mysqldump很容易实现。

以上就是Oracle和MySQL的数据导入为何差别这么大的详细内容,更多关于Oracle和MySQL的数据导入的资料请关注真格学网其它相关文章!

一、并发性并发性是oltp数据库2113最重要的特性,但并5261发涉及到资源的获取、4102共享与锁定。mysql:mysql以表级锁为1653主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。oracle:oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以oracle对并发性的支持要好很多。二、一致性oracle:oracle支持serializable的隔离级别,可以实现最高级别的读一致性。每个session提交后其他session才能看到提交的更改。oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块。mysql:mysql没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据。三、事务oracle很早就完全支持事务。mysql在innodb存储引擎的行级锁的情况下才支持事务。四、数据持久性oracle保证提交的数据均可恢复,因为oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,如果出现数据库或主机异常重启,重启后oracle可以考联机在线日志恢复客户提交的数据。mysql:默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据。五、提交方式oracle默认不自动提交,需要用户手动提交。mysql默认是自动提交。六、逻辑备份oracle逻辑备份时不锁定数据,且备份的数据是一致的。mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用。七、热备份oracle有成熟的热备工具rman,热备时,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。mysql:myisam的引擎,用mysql自带的mysqlhostcopy热备时,需要给表加读锁,影响dml操作。innodb的引擎,它会备份innodb的表和索引,但是不会备份.frm文件。用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其他用户使用数据库。但此工具是收费的。innobackup是结合ibbackup使用的一个脚本,他会协助对.frm文件的备份。八、sql语句的扩展和灵活性mysql对sql语句有很多非常实用而方便的扩展,比如limit功能,insert可以一次插入多行数据,select某些管理数据可以不加from。oracle在这方面感觉更加稳重传统一些。九、复制oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。mysql:复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。十、性能诊断oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等mysql的诊断调优方法较少,主要有慢查询日志。十一、权限与安全mysql的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。oracle的权限与安全概念比较传统,中规中矩。十二、分区表和分区索引oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验。mysql的分区表还不太成熟稳定。十三、管理工具oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。mysql管理工具较少,在linux下的管理工具的安装有时要安装额外的包(phpmyadmin, etc),有一定复杂性。这里很详细内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 浅谈入门级oracle数据库数据导入导出步骤
  • linux下oracle数据导入导出的方法详解
  • oracle如何查看impdp正在执行的内容
  • oracle 存储过程、函数和触发器用法实例详解
  • oracle to_char函数的使用方法
  • oracle to_date()函数的用法介绍
  • oracle的四道经典面试题分享
  • oracle 系统变量函数介绍
  • oracle中截断表的使用介绍
  • 浅谈oracle scn机制
  • oracle中左填充(lpad)和右填充(rpad)的介绍与用法
  • oralce和db2兼容开发注意事项
  • oracle和mysql差别大吗
  • 大数据量的情况下oracle是否比mysql具有优势
  • oracle和MYSQL怎么有这么大的性能差别
  • oracle数据导入mysql精度不对怎么办?
  • Oracle数据库相比与MySql数据库哪个更适合于大型门...
  • oracle数据导入mysql精度不对怎么办?
  • 请问下mysql和oracle的区别
  • 如何将mysql中的数据导入到oracle数据库中
  • mysql数据库的SQL语句和oracle的有什么区别?详细点
  • mysql和oracle两者数据如何互相导
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页浅谈入门级oracle数据库数据导入导出步骤linux下oracle数据导入导出的方法详解oracle如何查看impdp正在执行的内容oracle 存储过程、函数和触发器用法实例详解oracle to_char函数的使用方法oracle to_date()函数的用法介绍oracle的四道经典面试题分享oracle 系统变量函数介绍oracle中截断表的使用介绍浅谈oracle scn机制oracle中左填充(lpad)和右填充(rpad)的介绍与用法oralce和db2兼容开发注意事项oracle 查看表空间的大小及使用情linux系统(x64)安装oracle11g完oracle数据库下载及安装图文操作oracle存储过程基本语法介绍oracle 10g 安装教程[图文]oracle 如何查询被锁定表及如何解基于ora-12170 tns 连接超时解决oracle数据库tns配置方法详解oracle中to_date详细用法示例(ororacle 创建表空间详细介绍oracle 字符串转成行oracle form中commit的概述及使用技巧浅析如何在tnsnames.ora中配置监听oracle sequence语句重置方介绍springjdbc批量处理数据代码示例oracle数据库的字段约束创建和维护示例ef 配置oracle数据库的具体操作方法oracle定义联合数组及使用技巧oracle 动态advstringgrid完美示例 (advsoracel使用脚本来修改表结构
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved