exp导出excel oracle_如何从Oracle快速导出数据到Excel

【摘要】

在生产系统使用过程中,常常会有从数据库中导出数据的需求。支持多种导出方式,例如使用spool、utl_file等内置方法导出,利用plsql developer、等第三方工具等。

【正文】

Oracle支持多种导出方式,包括自带的工具包和第三方工具。不同工具有各自的适用场景,这里对常见的四种方案进行简要分析:

一利用utl_file将执行结果导出为.csv文件

1.1方法描述

使用流程:

1、定义字段列表(根据实际情况增减字段);

2、定义目录对象(如果没有,需要先通过create directory创建);

3、定义输出文件名称(不用写文件后缀名);

4、定义输出表格标题(可自定义显示的字段名);

5、设置执行的

6、映射字段列表(依次给字段赋值);

7、输出每一行数据。

1.2操作演示

这里演示如何通过sqlplus工具将指定SQL语句的执行结果导出到.csv文件。

指定SQL:

select

OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS from

dba_objects;

说明:

dba_objects包含18万行数据。

脚本内容:

--脚本内容开始---

--会话设置

SET

SERVEROUT ON;--打开输出提示

SET

TIMING ON;--打开计时器

--定义变量

DECLARE

DIRPATHVARCHAR2(4000);--目录对象

OUTFILEVARCHAR2(4000);--输出文件名称

VSFILEUTL_FILE.FILE_TYPE; --定义用于接收文件句柄的类型

V_CNTNUMBER;--统计每个文件加载行数

--定义字段列表

--根据实际情况增减字段,为了方便,可以采用Cn的定义方式,n为查询结果的列数

C1VARCHAR2(4000);

C2VARCHAR2(4000);

C3VARCHAR2(4000);

C4VARCHAR2(4000);

C5VARCHAR2(4000);

C6VARCHAR2(4000);

BEGIN

--设置dbms_output输出的缓冲大小

--DBMS_OUTPUT.ENABLE(1000000); -->避免报错ORA-20000:

ORU-10027: BUFFER OVERFLOW, LIMIT OF 10000 BYTES

--定义目录对象

DIRPATH:= 'EXPDATA'; --这里对应OS上的目录“D:\expdata”

--定义输出文件名称

OUTFILE:= 'dba_objects';

--开始打开文件,这里使用DIRECTORY参数指定输出文件的存放位置

VSFILE := UTL_FILE.FOPEN(DIRPATH, OUTFILE ||

'.CSV', 'W');

/*参数介绍:

UTL_FILE.FOPEN(LOCATION IN VARCHAR2, FILENAME

IN VARCHAR2, OPEN_MODE IN VARCHAR2) RETURN FILE_TYPE;

LOCATION是文件存放的DB目录名称,-------执行用户要有对DIR目录的读写权限

FILENAME是文件名,

OPEN_MODE是打开模式('R'是读文本,'W'是写文本,'A'是附加文本,参数不分大小写,如果指定'A'但是文件不存在,它会用'W'先创建出来,'W'有覆盖的功能)*/

--定义输出表格标题

UTL_FILE.PUT_LINE(VSFILE,

'OWNER, OBJECT_NAME,

OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS');

--每个文件加载行数[每次进入循环都赋值为0].排除标头部分

V_CNT := 0;

--设置执行的SQL语句

--将FOR循环查询的内容

FOR SQL_ IN (select OWNER, OBJECT_NAME,

OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS from dba_objects) LOOP

--映射字段列表

C1:= SQL_.OWNER;

C2:= SQL_.OBJECT_NAME;

C3:= SQL_.OBJECT_TYPE;

C4:= SQL_.CREATED;

C5:= SQL_.LAST_DDL_TIME;

C6:= SQL_.STATUS;

--输出每一行数据

/*UTL_FILE.PUT_LINE若需要EXCEL格式,需要每字段用逗号隔开,,WINDOWS EXCEL工具打开默认就是EXCEL格式*/

UTL_FILE.PUT_LINE(VSFILE,

C1 || ',' || C2 || ',' ||

C3 || ',' || C4 || ',' ||

C5 || ',' ||

C6);

--计数器,每一条数据都循环+1

V_CNT := V_CNT + 1;

END LOOP;

--打印每个文件LOAD ROWS

DBMS_OUTPUT.PUT_LINE( OUTFILE || '.CSV文件LOAD ROWS:' || V_CNT);

--放在LOOP后,否则报错ORA-29282:文件ID无效/ORA-06512:在"SYS.UTL_FILE", LINE 878

--若不写如下 强制输出缓冲/关闭句柄,可能存在导出数据少于查询条目

UTL_FILE.FFLUSH(VSFILE);

UTL_FILE.FCLOSE(VSFILE);

END;

--脚本内容结束---

上述脚本已经通过多次测试成功,且每一步都有详细说明,用户可根据实际的SQL语句进行设当调整即可实现数据导出到excel。

下面是执行成功截图:

此时可在D:\expdata目录下找到导出的.csv文件,如:

二利用plsql

developer将执行结果导出为.csv文件

2.1方法描述

先执行要查询的SQL语句(执行完能看到有结果即可,无需显示所有数据),然后点击“export query result...”按钮,选择“CSV file”(或需要的文件类型),在弹出的对话框输入文件名后点击“保存”按钮即可。

2.2操作演示

这里演示如何通过plsql

developer工具将指定SQL语句的执行结果导出到.csv文件。

指定SQL:

select

OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, STATUS from

dba_objects;

说明:

dba_objects包含18万行数据。

导出完成后可在指定的目录下找到导出的.csv文件。

三利用excel连接数据库进行导出

3.1方法描述

Excel可通过ODBC驱动直接写SQL语句查询Oracle中数据。

3.2操作演示

这里演示如何通过excel连接数据库进行数据导出。

3.2.1配置ODBC数据源

开始->控制面板->系统和安全->管理工具->ODBC数据源(可根据自己的情况选择32位还是64位)。

因安装的是Oracle

11.2.0.4 64位,故选择ODBC数据源(64位),显示如下:

进入Oracle ODBC配置项,需要填写的有四项:

Data Source Name:其实就是给该数据源取一个名字,在本例中我取的是“test”。

Description:对该数据源的描述,可写可不写。

TNS Service Name:即网络服务名,这个是在Oracle客户端tnsnames.ora中定义,这里的是“excel_to_oracle”。

tnsnames.ora中对应的内容可能如下:

excel_to_oracle

=

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 182.17.6.5)(PORT

= 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

User ID:用户名,该用户必须对所查询的表有可读权限。

3.2.2在Excel中进行查询操作

注:这里的Excel版本是2016。

2.1、数据->获取外部数据->自其他来源->来自Microsof Query,如图所示:

2.2、选择数据源“test”,点击“确认”。

2.3、输入scott用户的密码,点击“OK”。

这里可能会卡一会儿

2.4、选择需要操作的表:

2.5、可根据实际情况筛选数据,这里直接下一步:

2.6、可根据实际情况进行排序,这里直接下一步:

2.7、将数据返回microsoft excel,完成设置:

2.8、在最后弹出的对话框设置好显示方式和放置位置,点击确定即可下:

可以看到数据已显示到excel表格中:

如果在microsoft

query中进行操作,可以点击如下图的按钮将数据返回到excel:

最后,可通过excel保存查询数据。

四利用spool打印数据到指定文件

4.1方法描述

在sqlplus工具中通过spool命令可保存sql执行结果到指定文件。

4.2操作演示

这里演示如何通过spool格式化输出scott用户下的tab表数据并保存到指定文件。

conn scott

--输入口令:

--已连接。

--格式化输出结果

set

linesize 200

set term

off verify off feedback off pagesize 6000

set markup

html on entmap ON spool on preformat off

--利用spool命令说明生成的xls表的名称

spool

D:\expdata\tables.xls

--执行查询语句

select *

from tab;

--保存文件

spool off

exit

导出完成后可在指定的目录下找到导出的.xls文件,如:

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

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

相关文章

C#找出数组中重复次数最多的数值

给定一个int数组,里面存在重复的数值,如何找到重复次数最多的数值呢? 这是在某社区上有人提出的问题,我想到的解决方法是分组。 1、先对数组中的所有元素进行分组,那么,重复的数值肯定会被放到一组中; 2、…

什么比日期和时区更难? SQL / JDBC中的日期和时区!

在jOOQ邮件列表上,最近有一个有趣的讨论,关于jOOQ当前缺乏对TIMESTAMP WITH TIME ZONE数据类型的现成支持。 没有人说日期,时间和时区很容易! 这里有一个有趣的部分,我建议阅读: 虚假的程序员相信时间 当…

Javascript – 正则表达式

目录 1. 正则表达式1.1 创建1.2 RegExp 对象属性1.3 RegExp 对象方法1.4 RegExp 分组2. 元字符和正则表达式规则1正则表达式 正则表达式本身就是一种语言,由普通字符和特殊的元字符(metacharacters)组成。它描述了字符串的匹配模式&#xff0…

spark-sql建表语句限制_第三篇|Spark SQL编程指南

在《第二篇|Spark Core编程指南》一文中,对Spark的核心模块进行了讲解。本文将讨论Spark的另外一个重要模块--Spark SQL,Spark SQL是在Shark的基础之上构建的,于2014年5月发布。从名称上可以看出,该模块是Spark提供的关系型操作AP…

4固定在底部_礼堂椅厂家教你如何固定座椅

礼堂椅厂家众所周知,当人们离开时,礼堂或刷房中使用的座椅会自动翻转到垂直位置,因此行和行之间有一条大通道让人走路。 在现有技术中,通过以下方法翻转礼堂椅:在两个支腿之间设置固定轴,并且在支座底部的两…

带有Hibernate OGM的NoSQL –第三部分:在WildFly上构建REST应用程序

欢迎回到我们的教程系列“带有Hibernate OGM的NoSQL”! 感谢Gunnar Morling( gunnarmorling )创建了本教程。 在这一部分中,您将学习如何在WildFly服务器上运行的Java EE应用程序中使用Hibernate OGM。 使用本教程前面部分已经知道…

关于创业公司的一些事情

最近终于离职了,离开了这家呆了快两年的公司,其中酸甜苦辣,不足为外人道,仅此记录下一些想法,供自己与大家思考。本文只讨论加入创业公司,并不讨论自己创业或者成为合伙人。 0. 该不该加入创业公司 我刚从研…

python时间去掉t_Python的set集合详解

Python 还包含了一个数据类型 —— set (集合)。 集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。 集合对象还支持 union(联合),intersection(交),difference&…

快乐学习 Ionic Framework+PhoneGap 手册1-3 {面板切换}

编程的快乐和乐趣&#xff0c;来自于能成功运行程序并运用到项目中,会在后面案例&#xff0c;实际运用到项目当中与数据更新一起说明 从面板切换开始&#xff0c;请看效果图和代码&#xff0c;这只是一个面板切换的效果 Index HTML Code <!DOCTYPE html> <html ng-ap…

去掉左边0_SLAM从0到1——11. 视觉里程计VO内容框架

「本文是之前学习VO 部分整理的思维导图&#xff0c;笔记写入之后均折叠了起来&#xff0c;正文中采用markdown格式展开&#xff0c;可看到笔记内容」放上来的目的其实是方便自己查阅笔记&#xff0c;同样给有需要的同学提供一点思路。整体上的结构分为5部分&#xff0c;包括常…

教程:如何实现Java OAuth 2.0以使用GitHub和Google登录

将Google和GitHub OAuth登录添加到Java应用程序的指南 我们添加到Takipi的最新功能之一是3rd party登录。 如果您像我一样懒惰&#xff0c;那么我想您也希望跳过填写表单和输入新密码的操作 。 只要有权限&#xff0c;许多人都希望使用第三方登录&#xff0c;只要他们要求的权…

工作生活随笔

11月10日&#xff1a;最近在看设计模式&#xff0c;争取把23种设计模式都用php写个示例。但是网上php实现的还是比较少&#xff0c;而且就算有例子也不太满意&#xff0c;倒是其他语言写的还不错。于是最近看了很多其他的语言编写的程序&#xff0c;其实都差不多。以后如果有时…

柔性太阳能电池pdf_房车旅行如何做到电力无忧,那就选择一套合适的太阳能供电系统吧...

“旅行途中房车电力够不够用&#xff1f;”是众多车友在购买房车时会考虑的因素之一。而房车外部供电方式一般有三种&#xff1a;电网供电、发电机发电和太阳能发电&#xff0c;其中太阳能发电因其结构简单、体积小且轻、易安装、维护简单、寿命长不易损坏、一次性投资、循环利…

POJ 3617

题意&#xff1a;给定长度为N的字符串S&#xff0c;现要构造一个字符串T&#xff08;起初为空串&#xff09;。任意进行一下的一种操作&#xff1a; 1>从S的头部删除一个字符&#xff0c;加到T的尾部 2>从S的尾部删除一个字符&#xff0c;加到T的尾部 目的使T的字典序最小…

echarts的词云图表类型有哪些_数据可视化之常见12种图表类型分析

数据可视化有众多展现方式&#xff0c;不同的数据类型要选择适合的展现方法&#xff0c;今天友创云天就整理分析了几种常见的类型&#xff0c;给大家提供参考。1.饼图饼图是一个划分为几个扇形的圆形统计图表。每个扇形的弧长&#xff08;以及圆心角和面积&#xff09;大小&…

使用Spring Boot和注释支持配置Spring JMS应用程序

1.简介 在以前的文章中&#xff0c;我们学习了如何使用Spring JMS配置项目。 如果查看有关使用Spring JMS进行消息传递的文章介绍 &#xff0c;您会注意到它是使用XML配置的。 本文将利用Spring 4.1版本中引入的改进 &#xff0c;并仅使用Java config来配置JMS项目。 在这个示…

两个饥肠咕咕的人

http://www.amznz.com/43/ Long long ago&#xff0c;有两个饥肠咕咕的人得到了一位长者的恩赐&#xff1a;一根鱼竿和一篓鲜活硕大的鱼。其中&#xff0c;一个人要了一篓鱼&#xff0c;另一个人要了一根鱼竿&#xff0c;于是他们分道扬镳了。得到鱼的人原地就用干柴搭起篝火煮…

室内主题元素分析图_2020届室内设计专业优秀毕业设计作品展(五)

“环”食疗养生空间概念设计△建筑外立面▲LOGO前 言每当人们提及健康时&#xff0c;人们的反应往往是运动、睡眠和饮食。现代的青年上班族&#xff0c;又因为快节奏的生活&#xff0c;工作压力大&#xff0c;饮食的不规律&#xff0c;生活不良习性的增加&#xff0c;导致了各…

编写下载服务器。 第一部分:始终流式传输,永远不要完全保留在内存中

下载各种文件&#xff08;文本或二进制文件&#xff09;是每个企业应用程序的生死攸关的事情。 PDF文档&#xff0c;附件&#xff0c;媒体&#xff0c;可执行文件&#xff0c;CSV&#xff0c;超大文件等。几乎每个应用程序迟早都必须提供某种形式的下载。 下载是通过HTTP来实现…

C++输入cin详解

C输入cin详解 输入原理&#xff1a; 程序的输入都建有一个缓冲区&#xff0c;即输入缓冲区。一次输入过程是这样的&#xff0c;当一次键盘输入结束时会将输入的数据存入输入缓冲区&#xff0c;而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的&#xf…