ORACLE文本导出方法详解.docx_第1页
ORACLE文本导出方法详解.docx_第2页
ORACLE文本导出方法详解.docx_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ORACLE文本导出方法详解整理人:CCPC本文主要介绍使用sqlplus工具将数据库字段导出成TXT文本格式文件。一、 文本导出原理Oracle 文本导出的原理就是把SELECT输出结果直接输出到文本文件中。使用spool 文件名 方式制定输出结果二、 spool常用的设置对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如:select taskindex|commonindex|tasktype|to_number(to_char(sysdate,YYYYMMDD) from ssrv_sendsms_task;set echo off;/显示start启动的脚本中的每个sql命令,缺省为onset feedback off;/回显本次sql命令处理的记录条数,缺省为onset heading off; /输出域标题,缺省为onset pagesize 0;/输出每页行数,缺省为24,为了避免分页,可设定为0。set termout off; /显示脚本中的命令的执行结果,缺省为onset trimspool on;/去除重定向(spool)输出每行的拖尾空格,缺省为offSET TERM OFF; /去除结果输出。特别提示:在执行语句时各个版本的ORACLE设置略有不同,oracle8版本使用的是set termout off命令关闭回显。Oracle92版本使用的是SET TERM OFF,标准的设置为:SET TIME OFF SET ECHO OFFSET HEAD OFFSET NEWPAGE NONESET HEADING OFFSET SPACE 0SET PAGESIZE 0SET TRIMOUT OFFSET TRIMSPOOL ONSET LINESIZE 2500SET FEEDBACK OFFSET ECHO OFFSET TERM OFF三、 脚本编写方法1、 单执行文件方式 SQL和执行脚本写到一个文件中,该方法主要适用于UNIX系统中,WINDOWS支持不是很好,例如:Tru64系统:#!/bin/shsend_day=sqlplus -s $DB_USER/$DB_PWD$DB_SERVEOF SET TIME OFF SET ECHO OFFSET HEAD OFFSET NEWPAGE NONESET HEADING OFFSET SPACE 0SET PAGESIZE 0SET TRIMOUT OFFSET TRIMSPOOL ONSET LINESIZE 2500SET FEEDBACK OFFSET TERM OFFspool /zxt10/ccpc/ts_yyt/ts_crm_area.txtselect a.serv_id|b.node|a.serv_state|a.bureau_no|a.state from servcrm a,tvlsm_bureaucrm b where a.city_no=38 and a.bureau_no=b.bureau_no;spool offEOFAIX系统:#!/bin/shsend_day=sqlplus -s $DB_USER/$DB_PWD$DB_SERV! /2、 调用外部SQL方式 该方法使用sqlplus调用外部SQL的方式,直接执行,或将多条写入同一个bat批处理文件中,改方法也适用于UNIX系统:sqlplus -s $DB_USER/$DB_PWD$DB_SERV unload_oracle.sql 其中unload_oracle.sql文件内容为:SET TIME OFF SET ECHO OFFSET HEAD OFFSET NEWPAGE NONESET HEADING OFFSET SPACE 0SET PAGESIZE 0SET TRIMOUT OFFSET TRIMSPOOL ONSET LINESIZE 2500SET FEEDBACK OFFSET TERM OFFspool /zxt10/ccpc/ts_yyt/ts_crm_area.txtselect a.serv_id|b.node|a.serv_state|a.bureau_no|a.state from servcrm a,tvlsm_bureaucrm b where a.city_no=38 and a.bureau_no=b.bureau_no;spool offexit;四、 大表导出时的问题遇到超过千万级别的大数据表导出,经常会遇到 ORA-01555的错误,ORA-01555: 快照过旧: 回退段号 1 在名称为 _SYSSMU1$ 过小导致终止。改问题解决方式有两条路:1、 修改数据库 undo retension参数,延长快照更新时间。2、 将大表分成多个表导出最常用的方式是对KEY值取模:spool file_name_1.txtselect user_data| from table wh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论