oracle语句返回值输出到文本,保存SQL*Plus输出到文本文件或Excel文件(转)

保存SQL*Plus输出到文本文件或Excel文件(转)

一、问题描述

有时需要将输出结果保存在文件中,那么,怎样将结果直接保存在文件中?

问题分析

如果要将查询结果应用到文件中,或经过编辑后再重新使用时,则需要将查询结果保存在一个文件中。在保存的同时,仍然能使查询结果在SQL*Plus窗口中显示。为此,只需要在SQL*Plus的命令窗口中,使用命令spool即可,命令格式如下:

spool

其中,file_name是要保存输出结果的文件名,如果没有指定文件名的后缀,则系统自动将其后缀指定为.lst或.lis。文件默认的路径与SQL*Plus在同一个路径之下,也可任意指定到其他路径。若查询完毕,则关闭文件。格式为:spool

off。

问题解答

具体步骤如下。

步骤1:进行环境变量的设置。例如,执行下列SET命令:

set echo off

set feedback off

set verify off

set heading off

set pagesize 0

spool off

sqlplus中的 set pagesize n

命令用来设置页的高度为n行。如果n为0,则页的高度不受限制。该命令用来生成更易读的结果。

步骤2:创建用于保存输出的平面文件。

spool

例如:spool d:\spool.txt

这样,SQL*Plus将把所有的输出以及在屏幕上的命令等都指定给该文件。

步骤3:执行查询输出。此时,系统并没有把结果保存到文件中,而是保存到缓冲区中。

步骤4:查询结束后,关闭文件即可。命令格式为:spool off。

此时,系统才真正把所有输出结果保存到文件中。

以上方法适用于MS-DOS环境下的SQL*Plus。在Sqlplusw.exe中,使用“文件”→“使用假脱机”和“关闭假脱机”即可。

二、输出到Excel文件

SQL> set termout off

SQL> set heading off

SQL> set pagesize 0

SQL> set verify off

SQL> set echo off

SQL> spool /tmp/aaa.csv

SQL> select id || ',' || name || ',' from

test; #多字个段分列存放在表格中

1,,

2,,

3,6,

,7,

SQL> spool off

补充一下:

在将查结果保存到文件的时候,可能不希望将结果输出到屏幕,这样会影响速度。那么就可以能通过脚本的方式来解决。在命令行下面实现不了,所以写在脚本中,招行一下就可以了。

创建文件

more email.sql

set term off

spool user.txt

@get_email.sql

spool off

exit

more get_email.sql

select email from album.wdxc_user;

sql>@email.sql

这样执行完了,就可以看到user.txt文件了。

附:ORACLE sqlplus set 命令速查:

SQL>set colsep' ';     //-域输出分隔符

SQL>set echo off;

//显示start启动的脚本中的每个sql命令,缺省为on

SQL> set echo

on //设置运行命令是是否显示语句

SQL> set feedback

on; //设置显示“已选择XX行”

SQL>set feedback

off;  //回显本次sql命令处理的记录条数,缺省为on

SQL>set heading off;   //输出域标题,缺省为on

SQL>set pagesize

0;   //输出每页行数,缺省为24,为了避免分页,可设定为0。

SQL>set linesize

80;   //输出一行字符个数,缺省为80

SQL>set numwidth

12;  //输出number类型域长度,缺省为10

SQL>set termout

off;   //显示脚本中的命令的执行结果,缺省为on

SQL>set trimout on;   //去除标准输出每行的拖尾空格,缺省为off

SQL>set trimspool

on;  //去除重定向(spool)输出每行的拖尾空格,缺省为off

SQL>set serveroutput on;

//设置允许显示输出类似dbms_output

SQL> set timing

on; //设置显示“已用时间:XXXX”

SQL> set autotrace

on-; //设置允许对执行的sql进行分析

set verify

off //可以关闭和打开提示确认信息old 1和new 1的显示.

1.window:

SQL> @d:\1.sql

其中1.sql文件内容:

set echo off;

set feedback off;

set verify off;

set term off;

set trimspool on;

set linesize 3000;

--set pagesize 999;

set newpage none;

set heading off;

spool d:\bbb.txt;

@d:\2.sql;

spool off;

其中2.sql文件内容为查询语句:

select * from emp;

二、LINUX:

首先编辑一个脚本文件,比如命名为abc.sh

spool

abc.txt; #将结果输出为abc.txt

select * from emp

spool off;

在sql>模式下使用@/opt/abc.sh即可,查询结果即输出到abc.txt了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值