`

spool常用的设置

 
阅读更多

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


注:LINESIZE要稍微设置大些,免得数据被截断, 它应和相应的TRIMSPOOL结合使用防止导出的文本有太多的尾部空格。但是如果 LINESIZE设置太大,会大大降低导出的速度


通常情况下,我们使用SPOOL方法,将数据库中的表导出为文本文件的时候会采用两种方法,如下述:
  方法一:采用以下格式脚本
  set colsep '|' ------设置列分隔符

     set trimspool on

     set linesize 20000

     set pagesize 0

     set newpage 1

     set heading off

     set term off

     spool 路径+文件名

     select * from tablename;

     spool off
  方法二:采用以下脚本

     set trimspool on

     set linesize 20000

     set pagesize 0

     set newpage 1

     set heading off

     set term off

     spool 路径+文件名

     select col1 ||'|'|| col2 ||'|'|| col3 ||'|'|| col4 from tablename;

     spool off
  比较以上方法,即方法一采用设定分隔符然后由sqlplus自己使用设定的分隔符对字段进行分割,方法二将分隔符拼接在SELECT语句中,即手工控制输出格式。
  在实践中,通过方法一导出来的数据具有很大的不确定性 ,这种方法导出来的数据再由sqlldr 导入的时候出错的可能性在95%以上,尤其对大批量的数据表,如100万条记录的表更是如此,而且导出的数据文件狂大。
  而方法二导出的数据文件格式很规整,数据文件的大小可能是方法一的1/4左右 。经这种方法导出来的数据文件再由sqlldr 导入时,出错的可能性很小,基本都可以导入成功。
  因此,实践中建议大家使用方法二 手工去控制spool文件的格式,这样可以减小出错的可能性,避免走很多弯路。

 

ksh脚本处理:

 

Ruby代码 复制代码 收藏代码
  1. #!/bin/ksh   
  2. DB_USER=tivan                               #DB USER   
  3. DB_PWD=tivan                               #DB PASSWORD   
  4. DB_SERV=orcl                                #DB SERVICE NAME   
  5. returnMessage=`sqlplus -s $DB_USER/$DB_PWD@$DB_SERV<<EOF   
  6. whenever sqlerror exit 1   
  7. whenever oserror exit 2   
  8. set pagesize 0 feedback off verify off heading off   
  9. set time off echo off   
  10. set pagesize 0   
  11. set linesize 2000   
  12. set trims on   
  13. set feedback off   
  14. set TERMOUT OFF   
  15. alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';   
  16. spool sp_test.txt   
  17. select PK_ID || '|' ||GRID_ID || '...' from tmp_jy_sys_table_col;   
  18. spool off   
  19. /   
  20. exit 3;   
  21. EOF`  
分享到:
评论

相关推荐

    spool常用设置

    spool常用设置 oracle 导数据

    ORACLE常用命令下载

    将命令写入指定的文件 spool d:\b.sql 结束 spool off 7. 交互式命令 A.值前加& 回车 输入值将代替上一个值 8.显示和设置环境命令 设置一行显示多少字符:set linesize 90 查询显示的字符数:show linesize 设置...

    最全的oracle常用命令大全.txt

    ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle&gt;svrmgrl SVRMGR&gt;connect internal SVRMGR&gt;startup ...

    DM 的命令行交互式工具 DIsql

    4DISQL 常用命令 23 4.1帮助 HELP 23 4.2输出文件 SPOOL 23 4.3切换到操作系统命令 HOST 24 4.4获取对象结构信息 DESCRIBE 24 4.5定义本地变量 DEFINE 和 COLUMN 30 4.6查看执行计划 EXPLAIN 36 4.7设置异常处理方式...

    SQL Plus常用命令

    SQL Plus是与oracle进行交互的客户端工具。在SQL Plus中,可以运行SQL Plus命令与SQL Plus语句。SQL Plus命令不被存入SQL缓冲区。... SQL Plus基本命令:desc命令、L命令、n命令、save命令、spool命令

    orcale常用命令

    可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行 DEFINE_EDITOR=vi f、运行命令文件 SQL&gt;START test SQL&gt;@test 常用SQL*Plus语句 a、表的创建、修改、删除 创建表的...

    常用的Oracle doc命令(收藏)

    1.连接数据库 普通用户连接数据库: ...超级管理员连接: Conn sys/sys as sysdba–oracle数据库不区分大小写 2.sql文件 保存sql文件 save c:\test.txt 编辑sql语句,用记事本编辑 ed c:\1.txt –编辑 SQL ...spool off –

    入门学习Linux常用必会60个命令实例详解doc/txt

    入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不...

    Oracle SQLPlus导出数据到csv文件的方法

    时不时地我们需要导出一些数据用作备份、查看报表等,如果用Sql Developer导出会非常慢。...spool /data/export.csv select t.name||','||t.age||','||t.salary||','||t.email||','||t.title from employee

    PL_SQL命令的使用大全.chm

    下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL&gt;start file_name SQL&gt;@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的...

    userdel命令 删除用户

    userdel命令用于删除指定的用户及与该用户相关的文件,英文全称即“user delete”。...这与Linux系统”一切操作皆文件”的思想正好吻合。 ...如果确实必须要删除,可以先终止用户进程,然后再执行userdel命令...常用参数:

    操作系统期末试题.doc

    实现SPOOL系统时必须在磁盘上辟出称为输入井和 输出井的专门区域,以存放作业信息 和作业执行结果。 虚拟存储器具有的主要特征为多次性、对换性和虚拟性。 8、按用途可以把文件分为系统文件、用户文件和 库文件三...

    Linux命令笔记

    第一部分:常用命令 常用命令/文件处理 0:基础功能 1:ls 显示文件目录 语法:ls 选项[-ald][文件或目录] 2:cat 显示文件内容(内容少适合) 语法:cat[文件名] 3:tac 显示文件内容 语法:tac[文件名] 4:more 分页...

    韩顺平oracle学习笔记

    案例:sql&gt;spool d:\b.sql 并输入 sql&gt;spool off 4(交互式命令 (1), 说明:可以替代变量,而该变量在执行时,需要用户输入。如:sql&gt;select * from emp where job=‘&job;’ 输入job是注意大小写 (2) edit 说明:该...

    systemd-cron-next:crontab到系统计时器框架的兼容性层

    它通过从/etc/crontab和/var/spool/cron /etc/crontab常用位置解析crontab和anacrontab文件并生成systemd计时器和服务来工作。 您可以将cron.target用作生成单元的单个控制点。 它旨在替代所有cron实现。 基本原理...

    ARM_Linux启动分析.pdf

    在一般的系统实现中,都使用了2、3、4、5几个级别,在 Redhat系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示XDM图形登录方式。7- 9级别也是可以使用的,...

    oracle实验报告

    SPOOL off /*终止SPOOL功能,关闭其文件。注意,此命令不可省,否则将建立空文件。 五、 实验内容 1、以cs+学号为用户名创建用户,并授予用户创建数据对象的权限。 2、复制emp表,复制表名为emp_学号,然后将emp表中...

    数据库基础 ORACLE

    §1.5.9 SPOOL将信息记录到文件中 35 §1.5.10 再运行当前缓冲区的命令 36 §1.6 常用数据字典简介 36 §1.7 ORACLE数据类型 38 §1.8 SQL 语句基础 44 §1.8.1 SQL语句所用符号 45 §1.8.2 简单select 查询 46 §...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    学习oracle,首先我们必须要掌握常用的基本命令,oracle中的命令比较多,常用的命令如下: 1. 登录命令(sqlplus) 说明:用于登录到oracle数据库 用法:sqlplus 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户...

    Oracle8i_9i数据库基础

    §1.5.9 SPOOL将信息记录到文件中 36 §1.5.10 再运行当前缓冲区的命令 36 §1.6 常用数据字典简介 37 §1.7 ORACLE数据类型 38 §1.8 SQL 语句基础 44 §1.8.1 SQL语句所用符号 44 §1.8.2 简单select 查询 45 §...

Global site tag (gtag.js) - Google Analytics