centos中将oracle中数据导出为.xlsx文件

关于oracle数据库中经常有需求,需要将数据库中的表数据导出为excel文件格式,其中网上给多的结果为:
1、通过图形化界面(通常使用为plsql),进行数据查询,在查询结果的空白处右键点击Copy to Excel将数据导出为excel格式文件。
在此记录另一种方式供大家参考,通过写入sql脚本,将数据库中任意表结构通过该脚本进行导出并生成.xlsx文件,具体步骤如下所示:
首先,编写一个脚本,内容如下:

set term off verify off feedback off pagesize 999  --pagesize为分页数据量,如果不需要分页,可将其值设为0
set markup html on entmap ON spool on preformat off --将数据以html形式输出到excel中
spool wp304.xlsx
select * from 需要导出的表名称;
spool off
--exit

然后在sqlplus下进入数据库用户执行该文件即可导出数据,导出的文件在centos的存储数据库的位置,根据个人存储位置进行获取

附载

spool常用命令:
常用命令
set arraysize 5000;  //此参数可提高SPOOL卸载的速度,最大可以设置为5000
set autotrace on;    //设置允许对执行的sql进行分析
set colsep ',';   //域输出分隔符
set echo off;    //显示start启动的脚本中的每个sql命令,缺省为on
set feedback off;  //回显本次sql命令处理的记录条数,缺省为on,设置显示“已选择XX行”
set heading off;   //输出域标题,字段的名称,缺省为on
SET LINESIZE 2500;   //每行允许的最大字符数,设置大些,免得数据被截断,但不宜过大,太大会大大降低导出的速度(注意必须与trimspool结合使用防止导出的文本有太多的尾部空格)
set newpage 1;       //设置页与页之间的分隔{1|n|NONE};当值为0时在每页开头有一个小的黑方框;当值为n时在页和页之间隔着n个空行;当为none时,会在页和页之间没有任何间隔;
set newp none;       //设置查询出来的数据分多少页显示,如果需要连续的数据,中间不要出现空行就把newp设置为none,这样输出的数据行都是连续的,中间没有空行之类的
set num 18;          //设置数字的长度,如果不够大,则用科学记数法显示
set numwidth 12;    //输出number类型域长度,缺省为10
SET NULL text;       //显示时,用text值代替NULL值
set pagesize 2000;  //输出每页行数,页面大小,缺省为24,为了避免分页,可设定为0
set serveroutput on; //设置允许显示输出类似dbms_output;--编写存储过程时,大多会将必要的信息输出;
SET SPACE 0;
set term off;        //不在屏幕上输出执行结果
set termout off;   //显示脚本中的命令的执行结果,缺省为on
set timing on;       //显示每个sql语句花费的执行时间,设置显示“已用时间:XXXX”
set trimout on;   //去除标准输出每行的拖尾空格,缺省为off
set trimspool on;  //去除重定向(spool)输出每行的拖尾空格,缺省为off
set verify off       //是否显示替代变量被替代前后的语句
SET wrap on;         //输出行长度大于设置行长度时(用set linesize n命令设置);值为on时,多余的字符另起一行显示,否则多余的字符将被切除,不予显示

spool之html命令格式:
SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON | OFF}] [SPOOL {ON | OFF}] [PRE[FORMAT] {ON | OFF}]
spool之html相关命令
HTML [ON|OFF]
指定是否生成HTML格式,ON生成,OFF不生成,默认是OFF。

HEAD text
指定HTML中HEAD标签中的内容,默认情况下,文本包括级联样式和标题。

BODY text
指定HTML中BODY标签属性

TABLE text
设置<TABLE>标签的属性,如BORDER, CELLPADDING, CELLSPACING和WIDTH.。默认情况下,<TABLE> 的WIDTH属性设置为90%,BORDER属性设置为1。

ENTMAP {ON|OFF}
指定在SQL * Plus中是否用HTML字符实体如<, >, " and &等替换特殊字符<, >, " and & 。默认设置是ON。
SPOOL {ON|OFF}
指定是否在SQL*Plus生成HTML标签<HTML><BODY>, </BODY></HTML>。默认是OFF。
注:
这是一个后台打印操作,只有在生成SPOOL文件生效,在屏幕上并不生效。

PRE[FORMAT] {ON|OFF}
指定SQL*Plus生成HTML时输出<PRE>标签还是HTML表格,默认是OFF,因此默认输出是写HTML表格。

在生成HTML格式时要设置一些其他操作,列出如下:

SET ECHO {ON|OFF}
是否显示脚本中正在执行的SQL语句。

SET FEED[BACK] {6|n|ON|OFF}
.是否显示当前sql语句查询或修改的行数。默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数。

SET HEA[DING] {ON|OFF}
是否显示列标题。当SET HEADING OFF时,在每页的上面不显示列标题,而是以空白行代替。

SET LIN[ESIZE] {80|n}
设置一行可以容纳的字符数。如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。
SET NEWP[AGE] {1|n|NONE}
设置页与页之间的分隔。
当SET NEWPAGE 0 时,会在每页的开头有一个小的黑方框。
当SET NEWPAGE n 时,会在页和页之间隔着n个空行。
当SET NEWPAGE NONE 时,会在页和页之间没有任何间隔。

SET NULL text
显示时,用text值代替NULL值

SET PAGES[IZE] {24|n}
设置一页有多少行数,如果设为0,则所有的输出内容为一页并且不显示列标题

SET WRA[P] {ON|OFF}
当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句,设置SET WRAP ON时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。

SET TERM[OUT] {ON|OFF}
是否在屏幕上显示输出的内容,  主要用与SPOOL结合使用。设置SET TERMOUT OFF,输出的内容只保存在输出文件中,不会显示在屏幕上,提高了SPOOL输出速度。

SET TRIMS[OUT] {ON|OFF}  
将SPOOL输出中每行后面多余的空格去掉
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值