Oracle & SQL 查询结果导出到文本或Excel文件方法
来源:互联网 发布:淘宝上一直给差评 编辑:程序博客网 时间:2024/06/05 00:56
(MEMO:利用spool缓冲池技术)
具体步骤如下:
1、在Oracle PL/SQL中输入缓冲开始命令,并指定输出的文件路径和文件名
spool d:\output.txt
2、在命令中输入相应的SQL查询命令
select * from customer;
...
3、在命令行中输入缓冲结果命令
spool off;
系统将缓冲池的结果输出到“output.txt”中,并以TAB分隔。
保存SQL*Plus输出到文本文件或Excel文件
一、问题描述
有时需要将输出结果保存在文件中,那么,怎样将结果直接保存在文件中?
问题分析
如果要将查询结果应用到文件中,或经过编辑后再重新使用时,则需要将查询结果保存在一个文件中。在保存的同时,仍然能使查询结果在SQL*Plus窗口中显示。为此,只需要在SQL*Plus的命令窗口中,使用命令spool即可,命令格式如下:
spool<file_name>
其中,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_flat_file>
例如:spool d:\spool.txt
这样,SQL*Plus将把所有的输出以及在屏幕上的命令等都指定给该文件。
步骤3:执行查询输出。此时,系统并没有把结果保存到文件中,而是保存到缓冲区中。
步骤4:查询结束后,关闭文件即可。命令格式为:spool off。
此时,系统才真正把所有输出结果保存到文件中。
以上方法适用于MS-DOS环境下的SQL*Plus。在Sqlplusw.exe中,使用“文件”→“使用假脱机”和“关闭假脱机”即可。
二、方法改进:
首先编辑一个脚本文件,比如命名为abc.sh
spool abc.txt; #将结果输出为abc.txt
select * from wap_subscribe where Telcomcompanyid = '20200' and (Orderdate like '2005%' or Disorderdate like '2005%');
spool off;
在sql>模式下使用@/opt/abc.sh即可,查询结果即输出到abc.txt了。
三、输出到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;
sqlplus uesr/passwd@aaa.bbb.com
sql>@email.sql
这样执行完了,就可以看到user.txt文件了。
把查询内容输出到文本
set echo off pagesize 0 heading off feedback off termout off
spool test.sql
select count(*) from user_tables;
spool off
上面的脚本执行完之后就会将查询内容输出至test.sql
第一行中的set命令对环境进行了设置
具体要设置哪些可以根据需求自己增减,
下面附上set参数说明
set time on //显示时间
set colsep' '; //-域输出分隔符
set echo off; //显示start启动的脚本中的每个sql命令,缺省为on
set echo on //设置运行命令是是否显示语句
set feedback on; //设置显示“已选择XX行”
set feedback off; //回显本次sql命令处理的记录条数,缺省为on
set heading off; //输出域标题,缺省为on
set pagesize 0; //输出每页行数,缺省为24,为了避免分页,可设定为0。
set linesize 80; //输出一行字符个数,缺省为80
set numwidth 12; //输出number类型域长度,缺省为10
set termout off; //显示脚本中的命令的执行结果,缺省为on
set trimout on; //去除标准输出每行的拖尾空格,缺省为off
set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
set serveroutput on; //设置允许显示输出类似dbms_output
set timing on; //设置显示“已用时间:XXXX”
set autotrace on-; //设置允许对执行的sql进行分析
set verify off //可以关闭和打开提示确认信息old 1和new 1的显示.
- Oracle & SQL 查询结果导出到文本或Excel文件方法
- Oracle & SQL 查询结果导出到文本中方法
- SQL查询结果导出到Excel中
- Jsp中导出查询结果到excel文件的简单方法
- 将查询结果导出到Excel的另一个方法
- 将查询结果导出到Excel的另一个方法
- SQL SERVER数据库导出表或查询到EXCEL文件的存储过程
- Sql Server 数据库表查询结果导出为excel文件
- DbVisualizer直接导出SQL查询结果数据到指定文件
- SQL中,把SQL查询分析器查询出来的结果,导出到EXCEL表格
- mysql查询结果导出到文件另一方法
- 怎样将查询结果导出到Excel
- 怎样将查询结果导出到Excel
- poi 对查询结果导出到excel
- SQL查询结果导出XML文件简单的方法
- SQL查询结果导出XML文件简单的方法
- sql查询结果集导出Excel
- sql查询结果导出excel表
- Merge Two Sorted Lists
- 软件缺陷术语
- Windows线程基础
- WEB 测试总结
- 关于Archlinux 的安装
- Oracle & SQL 查询结果导出到文本或Excel文件方法
- 第一周13/07/08-13/07/14
- 什么是软件测试?
- Linux下Tomcat重新启动
- 读懂了,人生才没有怨言......
- 'hello, world'的起源
- golang反射中函数和方法的调用
- 异常Address family not supported by protocol family
- ubuntu 下编译运行C/C++语言