06_SPOOL导出_表头模式

–#############################################################################
–#############################################################################

–设置oracle参数信息
–设置字段间隔符,默认为空格
SET COLSEP ‘|’
–设置不列出命令清单
SET ECHO OFF
–设置不显示由查询返回的记录总数
SET FEEDBACK OFF
–设置不打印列标题
SET HEADING OFF
–设置查询结果不分页显示
SET PAGESIZE 0
–设置查询结果每一行显示的字符数
SET LINESIZE 600
–设置禁止在屏幕上显示查询输出结果
SET TERMOUT OFF
–设置去除每行显示结尾的空格
SET TRIMOUT ON
–设置对每一行的前后空格进行滤除
SET TRIMSPOOL ON
–设置输出数据的格式
COLUMN amount1 FORMAT 99999999999999.99
COLUMN amount2 FORMAT 99999999999999.99
COL today NEW_VALUE today NOPRINT

SELECT a.crndat today
FROM ds.sysctl a
JOIN mis.dtimes b
ON a.crndat = b.daykey
WHERE a.appnam=‘SSS’;

–每月1、15日凌晨生成要还款数据,传入日期为批量日期T-1
–COL daystr NEW_VALUE daystr noprint
–COL daycut NEW_VALUE daycut noprint

–select to_char(to_date(’&1’,‘YYYYMMDD’)+1,‘yyyymmdd’) daystr,
— to_char(to_date(’&1’,‘YYYYMMDD’)+1,‘dd’) daycut
– from dual;
–设置输出文件
–spool $HOME/ZRTP_CA/data/LOAN_NO_ACCT.&daystr.DAT
–处理分区
–declare
– TODAY varchar2(8); --明日
– TOMORROW varchar2(8); --明日
– MONTH_END_DATE varchar2(8); --月末
– DELETE_DAY varchar2(8); --删除日期 上两个月一号
– DATE_FLAG varchar2(8); --日期标志
– DORP_SQL1 varchar(200);
– DORP_SQL2 varchar(200);
– CREATE_SQL varchar(200);
–begin
– --先删除当日的分区以重跑
– begin
– select to_char(MONTH_END_DATE, ‘YYYYMMDD’),
– to_char(a.daykey, ‘YYYYMMDD’),
– to_char(a.daykey + 1, ‘YYYYMMDD’),
– to_char(add_months(a.daykey, -1), ‘YYYYMMDD’)
– into MONTH_END_DATE, TODAY, TOMORROW, DELETE_DAY
– from dw.dtimes a
– where daykey = to_date(’&1’,‘YYYYMMDD’);
– DORP_SQL1 := ‘alter table mis.af_actbal_pj drop partition af_actbal_pj_’||TODAY;
– execute immediate DORP_SQL1;
– exception
– when others then
– NULL;
– dbms_output.put_line(SQLERRM || DORP_SQL1);
– end;
– --建立当日分区
– begin
– CREATE_SQL := ‘alter table mis.af_actbal_pj add partition af_actbal_pj_’||TODAY
– || ’ values less than (to_date(’’’ || TOMORROW ||
– ‘’’,’‘YYYYMMDD’’))’;
– execute immediate CREATE_SQL;
– exception
– when others then
– NULL;
– dbms_output.put_line(SQLERRM || CREATE_SQL);
– end;
– --删除一个月之前的分区
– begin
– DATE_FLAG:=DELETE_DAY;
– if (DATE_FLAG != to_char(last_day(to_date(DATE_FLAG,‘YYYYMMDD’)),‘YYYYMMDD’)) then
– begin
– DORP_SQL2 := ‘alter table mis.af_actbal_pj drop partition af_actbal_pj_’||DATE_FLAG;
– execute immediate DORP_SQL2;
– exception
– when others then
– NULL;
– dbms_output.put_line(SQLERRM || DORP_SQL2);
– end;
– end if;
– end;
–end;
–/

prompt 数据处理开始…
prompt =======================================================================
delete from mis.af_actbal_pj
where crndat = to_date(’&daykey’, ‘YYYYMMDD’);
prompt =======================================================================
prompt 开始出具报表

–设置输出文件
spool gj_retfix.txt

–查询语句
select t.supbak,r.orgidt,r.dpttyp,r.curbal,r.orgidt||r.depnum||r.curcde||r.dpttyp||r.resbit||r.seqnu
m||r.chkbit,r.intrat,r.opndat,r.valdat,r.expdat
from retfix r join tmporg t on t.orgidt=r.orgidt
where r.dpttyp=‘96’ and r.dptprd=‘36’ and r.actsts=‘1’
and r.valdat between ‘2007-01-01’ and ‘&daystr’
;

–输出完成
spool off;

prompt 出具报表结束
prompt =======================================================================

–退出
exit

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Oracle中可以使用spool命令将查询结果导出到文件中,然后再将文件转换为Excel格式。具体步骤如下: 1. 在SQL*Plus中使用spool命令将查询结果导出到文件中,例如: spool c:\temp\result.txt select * from table_name; spool off; 2. 打开导出的文件,将其另存为Excel格式(.xls或.xlsx)。 3. 在Excel中打开另存为的文件,可以看到查询结果已经以表格的形式呈现出来。 需要注意的是,导出的文件可能需要进行一些格式调整,例如设置列宽、调整字体等。 ### 回答2: Oracle是一种常见的数据库,一个经常需要进行的操作是将数据从Oracle数据库导出到Excel表格中。这个时候可以使用Oracle的spool功能来实现。 spoolOracle的一个命令,用来将输出信息保存到一个文件中。在使用spool导出数据到Excel的时候,我们需要先使用SQL语句查询需要导出的数据,并将其结果保存到一个文件中。以下是具体的步骤: 1. 在SQL*Plus中连接Oracle数据库,并设置输出格式,以便在Excel中正确显示数据类型。 2. 编写SQL语句,查询需要导出的数据。 3. 使用spool命令将查询结果输出到一个文本文件中,这个文本文件会在导出Excel文件时被使用。 4. 在Excel中打开导出的文本文件,将其保存为Excel文件格式,完成导出操作。 下面是一个具体的示例: 1. 首先,在SQL*Plus中连接Oracle,并设置输出格式: ``` SET HEADING OFF SET ECHO OFF SET PAGESIZE 0 SET FEEDBACK OFF SET TERMOUT OFF SET TRIMOUT ON SET TRIMSPOOL ON SET COLSEP "," ``` 2. 接着,编写SQL语句,查询需要导出的数据。例如,我们可以查询一个表中的所有数据,如下所示: ``` SELECT * FROM my_table; ``` 3. 然后,使用spool命令将查询结果输出到一个文本文件中,保存文件路径根据个人喜好来选择: ``` SPOOL C:\temp\my_table_data.txt SELECT * FROM my_table; SPOOL OFF ``` 4. 最后,在Excel中打开导出的文本文件,并将其保存为Excel文件格式。在打开文本文件时,Excel会提示你选择如何解析该文件,可以将分隔符设置为“逗号”,并确保数据类型正确,然后进行保存。 如上所述,使用Oracle的spool功能导出到Excel非常简单。这种方法可以确保导出的数据格式正确,且不需要借助其他工具,非常实用。 ### 回答3: Oracle SpoolOracle数据库提供的一个功能,可以将SQL执行结果输出到文本文件中。而如果要将这些文本数据导出到Excel中,我们可以通过以下步骤进行操作: 1. 首先在SQL*Plus中输入要查询的SQL语句,并使用Spool功能将结果保存到文本文件中。例如: spool test.txt select * from students; spool off; 2. 然后将test.txt文件保存到计算机的本地磁盘上,例如C盘的根目录下。 3. 打开Excel软件,选择‘数据’选项卡,然后点击‘从文本/CSV’文件中获取数据。 4. 在文件打开对话框中,选择‘Unicode UTF-8’编码格式,然后点击‘导入’按钮。 5. 在导入向导中,选择‘分隔符’选项,然后在分隔符类型中选中‘逗号’,保持其他选项默认即可。 6. 点击‘下一步’,在数据预览窗口中可以看到查询结果的数据,如果需要修改数据类型或对齐方式等,可以选择相应的选项。 7. 最后按照导入向导的提示完成导入操作,即可将查询结果导入到Excel中。 需要注意的是,导出的数据可能会出现中文乱码的情况。为了避免这种情况,可以通过设置Spool的输出编码格式为Unicode来解决。例如: set NLS_LANG=AMERICAN_AMERICA.UTF8 spool test.txt select * from students; spool off; 通过以上步骤,就可以将Oracle中的查询结果进行导出并导入到Excel中,方便进行进一步的数据分析和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值