Oracle导出Excel的几种操作方案的比较
最近有个需求,从Oracle导出数据到Excel。
针对这个需求,有多种实现方式,例如spool、utl_file、PLSQL Developer导出、Java等语言直连数据库操作,没有最佳方案,只有最合适的。
(1)spool
spool是Oracle提供的命令行数据导出工具。它可以将select数据库的内容写到文件中,同时可以设置一些格式,控制输出的结构,只需要select前执行"spool 文件路径和名称",即可将select的内容,输出到这个文件。
基本格式如下,
SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]
例如,
spool test.txt(test.csv)
select ...
spool off
可以控制输出文件的格式,通常在脚本中调用这个指令,和业务逻辑结合。如果说它的弊端,调整输出格式,算是其中之一,例如输出文件中是否删除表头,是否删除SQL语句,每个字段的宽度,这些可能都需要提前设置。
可参考《spool导出格式的问题》。
sqlplus中常用的一些设置格式的指令,
set echo off --关闭脚本中正在执行的SQL语句的显示
set feedback off --关闭本次sql命令处理的记录条数,默认为on即去掉最后的已经选择的行数
set verify off --可以关闭和打开提示确认信息
set heading off --关闭标题的输出设置为off就去掉了select结果的字段名,只显示数据
set term off --不在屏幕上输出执行结果
SET newpage none --页与页之间没有分隔
set trimspool on --将每行后面多余的空格去掉【linesize-实际字符数=多余空格】
set trimout on --去除标准输出每行后面多余的空格
set linesize 200 --设置每行最多显示200个字符
set pagesize 0 --设置每页最多显示999行记录
set termout off --屏幕不显示查询数据
(2)utl_file
Oracle还提供了utl_file,用于读写操作系统文件,具体操作可参考《Oracle数据导出新选择》,最大的优势,就是它的效率高,毕竟是内部执行,测过200万数据导出,大约用时16秒,还支持文件切分,算是一种高级的数据导出工具。可以在存储过程中调用utl_file,还可以通过程序进行调用,功能很强大,但是得了解它的用法,具体可参考《PL/SQL Packages and Types Reference》这个官方文档。
(3)PLSQL Developer
PLSQL Developer导出,可能是最简单的,因为都是图形化的操作,即使不是很熟悉数据库,都可以快速掌握。
但是凡事都是两面的,简单易懂,自然有它的弊端,单就软件来说,封装了很多操作,例如常用的F5,查看执行计划,它执行的是explain,了解Oracle的朋友可能知道这种方式得到的执行计划可能不是真实的(具体可参考《一个执行计划异常变更的案例 - 外传之查询执行计划的几种方法》),因此,可能会对问题的判断产生影响。
和PLSQL Developer一些问题相关的历史文章,
《能不能算是PLSQL Developer的锅?》
《PLSQL Developer中控制结果集表格自动提交》
《PLSQL Developer几个可能的隐患》
《PLSQL Developer中文乱码问题》
《PLSQL Developer免密登录》
《PLSQL Developer日期格式如何定制化》
通过PLSQL Developer是可以直接导出Excel格式的文件,但是适合于数据量较小的场景,数据量太大,容易卡顿,而且自定义的可控性不强,毕竟都是软件提供现成的功能。
(4)Java等语言
通过Java、C、Python这些编程语言可以直连数据库,进行数据的导出,最大的优势,就是自主性很强,任何格式、任何逻辑,都可以通过程序来实现。但相对来说,对使用者就会提出更高的要求,尽管像连接数据库的操作、检索数据的操作、导出Excel的操作,相对比较通用,但是还得需要一些学习成本,如果是和业务逻辑绑定的,通过程序实现Excel的导出,还是比较方便的。
因此,采用何种数据导出的操作,还是取决于具体的需求,结合导出数据量,选择最合适方案。选择的过程, 其实就是设计的过程,和写程序一样,设计好了,事半功倍,"磨刀不误砍柴工"。
参考资料,
http://blog.itpub.net/28602568/viewspace-2120711/
https://www.cnblogs.com/xzjf/p/8550449.html
https://www.cnblogs.com/maowenjie/p/12851535.html
https://blog.csdn.net/lixiaomei0623/article/details/121274473
https://blog.csdn.net/baoqiangwang/article/details/121134329
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,
近期更新的文章:
《Oracle强制创建视图的操作》
《最近碰到的一些问题》
《这次的"室温超导"爆炸性发现,会是人类的进步?》
《国务院机构改革方案的学习》
《MySQL日志 - Redo Log重做日志》
近期的热文:
《推荐一篇Oracle RAC Cache Fusion的经典论文》
《"红警"游戏开源代码带给我们的震撼》
文章分类和索引:
《公众号1100篇文章分类和索引》
Oracle导出Excel的几种操作方案的比较相关推荐
- (转).NET导出Excel的四种方法及评测
.NET导出Excel的四种方法及评测 导出Excel是.NET的常见需求,开源社区.市场上,都提供了不少各式各样的Excel操作相关包.本文,我将使用NPOI.EPPlus.OpenXML.Aspo ...
- Oracle导出excel
oracle导出excel(非csv)的方法有两种,1.使用sqlplus spool,2.使用包体 现将网上相关代码整理后贴出以备不时之需: 使用sqlplus: 使用sqlplus需要两个文件: ...
- .net 导出excel_C# 导出 Excel 的 6 种简单方法!你会几种?
[CSDN 编者按]C# 导出 Excel 的6种简单方法:数据表导出到 Excel,对象集合导出到 Excel,数据库导出到 Excel,微软网格控件导出到 Excel,数组导出到 Excel,CS ...
- html表格导出excel有几种方式
html表格导出excel有几种方式 一. 前后端结合 利用 JavaScript 将表格内容转换为 Excel 文件格式,然后通过 Ajax 请求将文件数据发送给后台,再由后台返回该文件数据流,前端 ...
- oracle 导出导入exl,关于oracle导出excel和excel导入oracle的经验总结【转】
一.oracle导出excel 方法一:最简单的方法---用工具plsql dev 执行File =>new Report Window .在sql标签中写入需要的sql,点击执行或按快捷键F8 ...
- oracle导出excel和excel导入oracle
一.oracle导出excel 方法一:最简单的方法---用工具plsql dev 执行File =>new Report Window .在sql标签中写入需要的sql,点击执行或按快捷键F8 ...
- 关于oracle导出excel和excel导入oracle的经验总结
http://blog.csdn.net/xieyunchao/article/details/5218974 一.oracle导出excel 方法一:最简单的方法---用工具plsql dev 执行 ...
- Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载
场景 HSSFworkbook,XSSFworkbook,SXSSFworkbook区别 HSSFWorkbook: 是操作Excel2003以前(包括2003)的版本,扩展名是.xls:导出exce ...
- .net npoi xssfclientanchor设置图片缩放大小_.NET导出Excel的四种方法及评测
前言 导出Excel是.NET的常见需求,开源社区.市场上,都提供了不少各式各样的Excel操作相关包.本文,我将使用NPOI.EPPlus.OpenXML.Aspose.Cells四个市面上常见的库 ...
最新文章
- P3201 [HNOI2009]梦幻布丁 [启发式合并][set]
- python内置函数用来返回数值型序列中所有元素之和_语句x = 3==3, 5执行结束后,变量x的值为_学小易找答案...
- 39. 组合总和020(思路+详解)
- elinks文字浏览器
- redis入门——服务器篇
- cesium3dtiles位置改变
- html5圆形提交按钮样式,HTML5 SVG带圆形进度条动画的提交按钮特效
- 通过shell登录OSC并备份博文
- a4如何打印双面小册子_a4如何打印双面小册子
- 有人喜欢有人嫉妒,竟然因为这上了互联网热搜
- 计算机论文档案初探,[电子档案管理论文:档案计算机管理技术人才培训工作初探.doc...
- 世界著名黑客的安全建议
- 如何证明Coq标准库中filter引理
- PMP项目管理是什么?
- 如何删除tmp计算机桌面,win10系统下tmp临时文件删除不了如何解决
- hp 800 g4 twr linux,【拆机】HP EliteDesk 800 G4 TWR—探究塔式机箱的秘密
- 零基础选择前端还是后端?
- Quartz的一般配置方法
- AttributeError: module 'torch.nn' has no attribute 'LocalResponseNorm'问题的解决办法
- 用Python写中文数字对照表
热门文章
- 关于C语言课设学生管理系统的编写(简单版)
- DHCP Lease Time - 动态 IP 使用时限
- AD出现Microsoft Excel is not found on your computer...如何解决
- Ubuntu应用---搜狗拼音输入法
- 使用VSTS的Git进行版本控制(六)——拉取请求
- 微信H5游戏开发需要注意什么?
- 技巧篇:scanf触发malloc_consolidate进行unlink(chunk size限制得到极小的chunk)
- FFmpeg+VS2013开发环境配置
- winform按钮切换页面_C#如何通过一个按钮实现窗体界面的中英文切换?
- 数据库工单系统的初步设计