精华内容
下载资源
问答
  • 任务需求是查询几个相关数据表,然后把结果输出为csv文件。1.先写一个sql文件,如果是在windows环境下运行要用ansi内码存盘。文件框架如下:SET feedback offSET pagesize 50000SET linesize 20000SET verify offSET...

    下面是工作中的一个实例。任务需求是查询几个相关数据表,然后把结果输出为csv文件。

    1.先写一个sql文件,如果是在windows环境下运行要用ansi内码存盘。文件框架如下:

    SET feedback off

    SET pagesize 50000

    SET linesize 20000

    SET verify off

    SET pagesize 0

    SET term off

    SET trims ON

    SET heading off

    SET trimspool ON

    SET trimout ON

    SET timing off

    SET verify off

    SET colsep

    spool C:\Users\Administrator\Desktop\result.csv

    --需要运行的sql语句写在这里。

    spool off

    quit

    2.形成表头的sql语句

    csv文件字段之间用逗号分隔,所以下面这句用来形成表头:

    select '品名,规格,单位,有效期,数量,整件数量,零头数量' from dual;

    3.查询结果字段之间用  ||','|| 这个形式分隔:

    SELECT a.TRADE_NAME ||','|| a.SPECS ||','|| a.PACK_UNIT ||','|| b.VALID_DATE ||','|| b.STORE_SUM / b.pack_qty ||','||

    CASE WHEN (select pkg_num from drug_packages where drug_name=a.TRADE_NAME) is null THEN 0 ELSE floor((b.STORE_SUM / b.pack_qty) / (select pkg_num from drug_packages where drug_name=b.TRADE_NAME)) END ||','||

    CASE WHEN (select pkg_num from drug_packages where drug_name=a.TRADE_NAME) is null THEN (b.STORE_SUM / b.pack_qty) ELSE mod((b.STORE_SUM / b.pack_qty) ,(select pkg_num from drug_packages

    where drug_name=a.TRADE_NAME)) END AS qty

    FROM PHA_COM_BASEINFO a , PHA_COM_STOCKINFO b WHERE a.DRUG_CODE = b.DRUG_CODE

    and b.DRUG_DEPT_CODE = '0039'

    and b.drug_code in (select DISTINCT DRUG_CODE from PHA_COM_APPLYOUT WHERE trunc(apply_date) = trunc(sysdate) AND DRUG_DEPT_CODE = '0039')

    AND (b.DRUG_QUALITY = 'ALL' OR 'ALL' = 'ALL')

    ORDER BY a.drug_type, a.CUSTOM_CODE ;

    4.case when end 结构的使用

    这个查询有两个字段是计算出来的。为便于清点,需要根据库存数量计算出库存一共有多少整件,多数零头。

    计算字段先要查询些该品种是否在整件包装规格的表内,如果在,取出数值进行计算然后显示,不在则直接显示。计算零头数语句如下:

    CASE

    WHEN (select pkg_num from drug_packages where drug_name=a.TRADE_NAME) is null

    THEN (b.STORE_SUM / b.pack_qty)

    ELSE mod((b.STORE_SUM / b.pack_qty) ,(select pkg_num from drug_packages where drug_name=a.TRADE_NAME))

    END

    5.其它需要注意的地方

    spool后面似乎只能用绝对路径。相对路径不好使。

    写好sql之后可以再写一个bat文件让这些东西在系统环境下直接调用。

    这里写了一个 calc.bat ,内容如下:

    sqlplus user/password@orcl @dev_tools\count.sql

    直接运行这个批处理文件,结果就spool指定的位置生成好了。

    6.总结

    起初这个任务想用python或者C++来写,但后来发现oracle自己就提供了很多方便工具。本着越简单越好的原则就上面的方法解决了问题。在工作中充分发掘基础工具的功能来完成任务可以减少很多麻烦。

    展开全文
  • spool–导出sql语句结果集 SQL>spool c:\testsql.sqlSQL>SELECT * FROM table_name;SQL>spool off; sav–保存执行的sql语句 SQL>SELECT * FROM table_name;SQL>sav c:\test.sql;   您可能感兴趣的文章:MySQL中在...
  • Oracle (MEMO:利用spool缓冲池技术) 具体步骤如下: ...2、在命令中输入相应的SQL查询命令 select * from customer; ... 3、在命令行中输入缓冲结果命令 spool off; 系统将缓冲池的结果输出到“output.
    Oracle
    

    (MEMO:利用spool缓冲池技术)

    具体步骤如下:

    1、在Oracle PL/SQL中输入缓冲开始命令,并指定输出的文件路径和文件名

    spool d:\output.txt

    2、在命令中输入相应的SQL查询命令

    select * from customer;

    ...

    3、在命令行中输入缓冲结果命令

    spool off;

    系统将缓冲池的结果输出到“output.txt”中,并以TAB分隔。

    展开全文
  • (MEMO:利用spool缓冲池技术) 具体步骤如下: ...2、在命令中输入相应的SQL查询命令 select * from customer; ... 3、在命令行中输入缓冲结果命令 spool off; 系统将缓冲池的结果

    (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 SqlPlus导出查询结果在sqlplus下导出查询的结果保存到本地sql文件中,可以采用如下方式:1、连接数据库:  sqlplus xmq/xmqpwd@192.168.1.57:1521/db 2、导出sql脚本:  set feedback off --回显本次sql...

     

    Oracle SqlPlus导出查询结果

    在sqlplus下导出查询的结果保存到本地sql文件中,可以采用如下方式:

    1、连接数据库   sqlplus xmq/xmqpwd@192.168.1.57:1521/db 2、导出sql脚本:   set feedback off  --回显本次sql命令处理的记录条数,缺省为on   set pagesize 0   --输出每页行数,缺省为24,设定为0表示不分页   set long 90000   spool c:/schema.sql  --输出文件路径,可以是全路径或是相对路径   select col1 from table1;--执行查询   spool off

    相关属性
    set echo off --不显示执行的sql语句
    set feedback off --不显示XX rows selected的行
    set heading off --不显示表头
    set termout off --不显示脚本运行结果
    set trimspool on --去掉脚本输出行尾部的空格
    set pagesize 0 --设置pagesize为零,不让oracle进行分页处理
    set linesize 10000 --设置每行最大列数
    set colsep '    ' --设置列之间的分隔符

     

     

     

     

    转载于:https://www.cnblogs.com/xmqa/p/6413598.html

    展开全文
  • oracle sqlplus命令行导出sql结果到文件

    千次阅读 2020-03-28 07:46:47
    导出sql结果 使用spool 即可。 spool ttt.txt; # select 1 from dual; # 查询语句 spool off; # 关闭缓冲,并导出内容到文件 小提示: spool ttt.txt; 文件不存在会新建,存在的话,直接清空。 执行sql并不会输出...
  • 方法一: (此方法为导出某张表中所有数据的insert语句) ...1.输入SQL语句,查询指定结果: 2.挑选自己所需要的数据(可按住Ctrl再选中自己需要的某些数据) 3.右键 -> 导出结果 -> SQL文件 4.选择路径 -&
  • 第一:SPOOL(SPOOL是SQLPLUS的命令,不是SQL语法里面的东西。) 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如: select taskindex||'|'||commonindex||'|'||tasktype||'|'||to_number(to...
  • 查询完数据后,把结果导出的时候报错。请问这个是怎么回事?如何解决?谢谢大家 ![图片说明](https://img-ask.csdn.net/upload/201701/13/1484291048_289049.png) ![图片说明]...
  • Oracle 查询结果导出为csv格式

    千次阅读 2015-07-15 14:59:14
    oracle 的plussql语句导出查询结果导出文件格式为csv格式  预备知识: 1. Oracle的存储过程知识 2. Oracle 的Utl_file,directory知识 3. 隐含知识点:plussql中表名用变量代替如何实现 假设...
  • Sqlserver原本是自带导入Oracle的配置管理工具的(具体可百度sqlserver导入Oracle,有很多文档),但是由于效率问题被很多人遗弃了,这里介绍一个将Sqlserver的查询结果生成insert语句的方法,见下文。 1、编写sql ...
  • sql标签中写入需要的sql,点击执行或按快捷键F8,会先吃出查询结果。在右侧工具栏,可以选择按钮另存为html、copy as html、export results,其中export results按钮中就可以导出excel文件、csv文件、tsv文件...
  • oracle中通过sql语句查询数据结果,在使用导出功能的时候,报错——ORA-00911:无效的字符。 解决办法: 去掉sql语句的分号,然后重新执行sql结果重新生成之后,再次导出即可。 如果有...
  • 在提示符 SQL&gt; 下依次键入: SET NEWPAGE 0 SET SPACE 0 SET LINESIZE 80 SET PAGESIZE 0 SET ECHO OFF SET FEEDBACK OFF SET VERIFY OFF SET HEADING OFF SET MARKUP HTML OFF SPOOL OFF ...
  • Oracle导出含有clob字段的表

    千次阅读 2019-04-10 15:37:01
    需要将表格导出备份的时候发现两张详情表导出失败 原因是详情表格内含有字段是clob...比如:SQL查询出表格所有内容后再进行导出查询结果导出的文件是SQL插入语句和普通的有什么区别呢,我在下面对比了一下 ...
  • oracle导出excel

    2012-04-27 14:49:00
    sql标签中写入需要的sql,点击执行或按快捷键F8,会先吃出查询结果。在右侧工具栏,可以选择按钮另存为html、copy as html、export results,其中export results按钮中就可以导出excel文件、csv文...
  • 在ITPUB上看到有人提出这个问题,能否利用数据泵导出一个查询结果。事实上数据泵还真的具有这个功能。这一篇介绍数据泵的QUERY功能。建立一个简单的测试环境:SQL> CREATE TABLE T1 2 (ID NUMBER, NAME VARCHAR2...
  • 在提示符 SQL> 下依次键入:
  • oracle导出excel 一、oracle导出excel ...在sql标签中写入需要的sql,点击执行或按快捷键F8,会先吃出查询结果。在右侧工具栏,可以选择按钮另存为html、copy as html、exportresults,其中export results
  • 支持根据sql语句查询出的结果导出到dbf文件中。要求是查询出的结果顺序,必须和dbf文件各个字段一一对应。 前提是必须提供dbf模板文件,以确定dbf文件各个字段的长度等信息。 目前支持10g,11g 的oracle client...
  • 首先打开oracle数据库 1、查询数据库, SELECT * FROM pub_...下面可以看到查询结果,全选查询结果,右键导出,如下图 之后再打开excel,具体步骤见下图 之后可以看到效果了, ...
  • 这一篇介绍外部表的卸载...还是上一篇中的测试环境:SQL> CREATE TABLE T1 2 (ID NUMBER, NAME VARCHAR2(30));Table created.SQL> INSERT INTO T1 2 SELECT ROWNUM, TNAME 3 FROM TAB;66 rows created.SQL>...
  • sql标签中写入需要的sql,点击执行或按快捷键F8,会先吃出查询结果。在右侧工具栏,可以选择按钮另存为html、copy as html、export results,其中export results按钮中就可以导出excel文件、csv文件、tsv文件、xml...
  • Oracle中,过程、type、函数等对象的源码可以通过USER_SOURCE或...所以我们可以通过拼接"CREATE OR REPLACE PACKAGE"拼接查询结果,生成创建过程、函数等的sql语句,举例: SET HEADING OFF; SET FEEDBACK OFF;...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 225
精华内容 90
关键字:

oracle导出sql查询结果