首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于Oracle导出到csv文件的脚本-spool方法

关于Oracle导出到csv文件的脚本-spool方法

作者头像
python与大数据分析
发布2022-03-11 17:05:56
发布2022-03-11 17:05:56
3.6K00
代码可运行
举报
运行总次数:0
代码可运行

Oracle就是这么牛,从外部文件导入到Oracle中有N种方法,想把Oracle的数据导出成通用文件的方法却不多,梳理下来大致有三种办法:

1、spool方法

2、DBMS_SQL和UTL_FILE方法

3、python等程序方法

本文主要是第一种方法,使用spool命令实行将sql*plus中的输出的结果复制到一个指定的文件中,直接使用spool off命令为止。spool方法的灵活性比较差,传递变量比较麻烦,好像也不能使用游标,循环和判断语句,但不啻为一种比较简单的方法。

spool方法可以将文件导出到客户端主机的目录下,获取比较容易一些。

spool 有很多常用set参数,这里设置 常用分隔符,标题,是否回显,pagesize和linesize,如下:

代码语言:javascript
代码运行次数:0
运行
复制
set colsep' ';    //域输出分隔符
set echo off;    //显示start启动的脚本中的每个sql命令,缺省为on
set feedback off;  //回显本次sql命令处理的记录条数,缺省为on
set heading off;   //输出域标题,缺省为on
set pagesize 0;   //输出每页行数,缺省为24,为了避免分页,可设定为0。
set termout off;   //显示脚本中的命令的执行结果,缺省为on
set trimout on;   //去除标准输出每行的拖尾空格,缺省为off
set trimspool on;  //去除重定向(spool)输出每行的拖尾空格,缺省为off

spool中主要难题是构造一个变量,尝试了好多遍,才成功,代码如下:

用execute命令,且变量前要加:冒号

代码语言:javascript
代码运行次数:0
运行
复制
set colsep  ,;
set feedback off;
set heading on;
set newp none;
set pagesize 10000;
set linesize 1000;
set trimout on ;
var statdate varchar2;
execute :statdate:=to_char(sysdate,'yyyy-mm-dd');
--导出问题清单一
spool c:/oracle/test1.csv;
select * from tablea t where statdate=:statdate;  
spool off  ;
--导出问题清单二
spool c:/oracle/test2.csv;
select * from tableb t where statdate=:statdate;  
spool off  ;

也可以按如下格式定义变量,但好像只能赋值常量:

代码语言:javascript
代码运行次数:0
运行
复制
define fil= 'c:\oracle\exp.txt'
prompt *** Spooling to &fil
spool &fil
select * from tab;
spool off;

纸上得来终觉浅,绝知此事要躬行,其实很多网上的例子都是错的,要想变人为己需要不断的调试。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档