oracle中spool卸数,数据卸载--spool的使用
引言
在项目中,我们经常会遇到数据的卸载、装载需求。
卸载就是需要将数据从数据库中导入到文本文件中的需求,这样的方法有很多,比较常用的就是spool命令。
装载就是需要将数据从文本文件中导入到数据库中。方法也有很多,常用的方法为:sqlldr。关于sqlldr,详见博客:《数据装载--sqlldr的使用》
下面介绍下spool的使用。
一、示例:
spool:是sqlplus的命令。它允许你把一句或者多句sql语句输出保存为文件格式。
SQL> spool d:\test1.txt
SQL> select userid,username,email from test;
SQL> spool off
查看文件test1.txt,数据导入文件成功。如果在spool后面的输出文件名那一栏不指定路径的话,默认在登陆用户的home目录下。
二、spool的语法格式:
spool { file_name[.ext] [create|replace|append]| off | out }
file_name:指定输出的文件名。默认的文件扩展名是.lst。
create:创建一个新的文件。
replace:默认使用该项.覆盖原有文件中的内容,如果原文件不存在则,新建一个输出文件。
append:把输出内容追加到指定的文件中。
off:停止输出。
out:停止输出,并发送到默认的打印机,该命令在有些操作系统上面不可用。
三、spool设置
示例一只是非常简单的使用了spool命令,但是对于sql的格式和输出文件的格式,最好自己定义好,否则出错概率非常大。
spool常用的设置
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
导出文本数据的建议格式:
SQL*PLUS环境设置
SET NEWPAGE NONE
SET HEADING OFF
SET SPACE 0
SET PAGESIZE 0
SET TRIMOUT ON
SET TRIMSPOOL ON
SET LINESIZE 2500
对于字段内包含很多回车换行符的应该给与过滤,形成比较规矩的文本文件。通常情况下,我们使用如下:
set trimspool on
set linesize 120
set pagesize 2000
set newpage 1
set heading off
set term off
spool 路径+文件名
select col1||','||col2||','||col3||','||col4||'..' from tablename;
spool off
示例一优化为:
SQL> set trimspool on
SQL> set linesize 120
SQL> set pagesize 2000
SQL> set newpage 1
SQL> set term off
SQL> spool d:\test2.txt
SQL> select userid||','||username||','||email||',,' from test;
SQL> spool off
查看test2.txt为:
SQL> select userid||','||username||','||email||',,' from test;
USERID||','||USERNAME||','||EMAIL||',,'
------------------------------------------------------------------------------------------------------------------------
a001,zhangsan,zhangsan@163.com,,
a002,lisi,lisi@163.com,,
a003,wangwu,wangwu@163.com,,
SQL> spool off
oracle中spool卸数,数据卸载--spool的使用相关推荐
- oracle模块损坏,Oracle中模拟及修复数据块损坏
Oracle中模拟及修复数据块损坏,itpub link: http://www.itpub.net/showthread.php?threadid=201766[@more@]Oracle中模拟及修 ...
- oracle中插入日期型数据,ORACLE插入日期数据
ORACLE插入日期数据 oracle数据库插入日期型数据 往Oracle数据库中插入日期型数据(to_date的用法) INSERT INTO FLOOR VALUES ( to_date ...
- Oracle中如何删除重复数据
我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据数据重复,那么,如何对重复的数据进行删除呢? 重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样. 一. ...
- oracle查询多张表交集,Oracle中对两个数据表交集的查询-专栏,ORACLE
oracle关系型管理系统是世界上流行的关系,它是一个极其强悍.灵活和复杂的系统,据说,在使用oracle时应有这样的观念,那就是在sql中近乎可以推动任何一种想法. 下面向你们介绍使用sql查两个o ...
- oracle中删除表的步骤,Oracle中删除表,删除数据以及恢复数据
1.删除表中数据两种方法 a. delete * from My_Table; b. truncate table My_Table; 2.删除整个表 drop table My_Table; 如何恢 ...
- oracle中spool卸数,Oracle中如何快速的卸载和加载数据?
前几天有个朋友在MSN上问,如何能更快速的从数据库中卸载和加载数据,他原来是用sql查询spool出来,效率很低. 这让我想起DCBA的一个工具ociuldr,这个工具是用C写成的,通过OCI和数据库 ...
- oracle 数据 时间间隔,如何掌握 Oracle 中的时间间隔型数据
在9i 版本以前,oracle 没有内置的方式来记录时间的流逝.date型数据用来记录单独的时间点:但是要表达一个时间量(也就是一个间隔),数据库的设计者就必须把时间间隔转换成原始单位秒,然后用一个n ...
- 恢复oracle中误删除delete的数据、drop掉的表
oracle误删除数据的恢复方法 学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些问题时,我开始寻找答 ...
- oracle时间间隔分钟数,如何掌握Oracle 中的时间间隔型数据
在9i 版本以前,Oracle 没有内置的方式来记录时间的流逝.DATE型数据用来记录单独的时间点:但是要表达一个时间量(也就是一个间隔),数据库的设计者就必须把时间间隔转换成原始单位秒,然后用一个N ...
最新文章
- python小项目案例-拯救Python新手的几个项目实战
- 03-身体部位-BodyParts(English)
- [转]Google 发现的十大真理
- matlab手眼标定
- 微信H5开发问题集锦
- 阴阳师服务器维护3月25日,阴阳师3月25日更新内容-阴阳师3月25日更新内容介绍_牛游戏网...
- element-ui el-upload框去除‘按 delete 键可删除’提示
- 华为5G,不服不行!
- 99%健身人士的疑问:营养补充窗口真的很重要吗?
- 初识计算机网络||概述
- Ubuntu下GNOME桌面美化
- VF控制和矢量控制的一些区别
- 未来办公利器-无影云超级桌面体验
- 微服务时代之2017年五军之战
- OPPO手机生日倒计时天数怎么在便签中设置?
- 2017年12月。。
- 液晶显示屏LCD1602
- Defaulting to no-operation (NOP) logger implementation
- 【攻破css系列——第九天】常规流
- linux系添加路由,Linux添加路由的两种方法