sqlplus中的spool命令怎么用

61次阅读
没有评论

共计 1651 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章给大家分享的是有关 sqlplus 中的 spool 命令怎么用的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

对于 SPOOL 数据的 SQL,最好要自己定义格式,以方便程序直接导入,SQL 语句如:
T_port 表中:select t.dslamip|| | ||t.dslamno from t_port t where t.dslamip= 200.224.49.5
spool 常用的设置
set colsep | // 域输出分隔符: 最好在 SQL 中自己指定。
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
set linesize 2500;  // 设定每行的 size
注:LINESIZE 要稍微设置大些,免得数据被截断,它应和相应的 TRIMSPOOL 结合使用防止导出的文本有太多的尾部空格。但是如果 LINESIZE 设置太大,会大大降低导出的速度,另外在 WINDOWS 下导出最好不要用 PLSQL 导出,速度比较慢,直接用 COMMEND 下的 SQLPLUS 命令最小化窗口执行。
对于字段内包含很多回车换行符的应该给与过滤,形成比较规矩的文本文件。通常情况下,我们使用 SPOOL 方法,将中的表导出为文本文件的时候会采用两种方法,如下述:
方法一:采用以下格式脚本
  set colsep |   – 设置 | 为列分隔符
set trimspool on
set linesize 120
set pagesize 2000 
set newpage 1
set heading off 
set term off
  set num 18 
  set feedback off 
spool 路径 + 文件名
select * from tablename;
spool off
方法二:采用以下脚本
  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
比较以上方法,即方法一采用设定分隔符然后由 sqlplus 自己使用设定的分隔符对字段进行分割,方法二将分隔符拼接在 SELECT 语句中,即手工控制输出格式。
在实践中,发现通过方法一导出来的数据具有很大的不确定性,这种方法导出来的数据再由 sqlldr 导入的时候出错的可能性在 95% 以上,尤其对大批量的数据表,如 100 万条记录的表更是如此,而且导出的数据文件狂大。
而方法二导出的数据文件格式很规整,数据文件的大小可能是方法一的 1 / 4 左右。经这种方法导出来的数据文件再由 sqlldr 导入时,出错的可能性很小,基本都可以导入成功。
 
导出文本数据的建议格式:
SQL*PLUS 环境设置:
  SET NEWPAGE NONE
  SET HEADING OFF
  SET SPACE 0
  SET PAGESIZE 0
  SET TRIMOUT ON
  SET TRIMSPOOL ON
  SET LINESIZE 2500
  spool 路径 + 文件名
  select col1|| , ||col2|| , ||col3|| , ||col4|| .. from tablename;
  spool off

感谢各位的阅读!关于“sqlplus 中的 spool 命令怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计1651字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)