SPOOL+SQLLDR数据导出

SPOOL导出:

$cat spool.sql 
set echo off                 
#控制start命令不列出命令文件中的每一命令
set feedback off         #显示由查询返回的记录数 off等价为0
set heading off           #报表中列标题不打印

set verify off               #不显示输入参数的变化过程

set trimspool on         #去掉spool输出时每行末端空格

set pagesize 0           #置从顶部标题至页结束之间的行数
set term off                 #查询结果仅仅显示于假脱机文件中  on:查询结果既显示于假脱机文件中,又在SQLPLUS中显示
set linesize 150         #置一行中显示的字符总数
spool /ocfs/sql/sqlldrdata/test_spool_file.txt
select
 empno||'       '||ename||'     '||job||'       '||mgr||'       '||to_char(hiredate,'yyyy-mm-dd')||'||sal||'        '||comm||'      '||deptno
from emp;
spool off

$cat test_spool.sh 
#!/bin/bash
sqlplus -s yp/yp <<EOF
@/ocfs/sql/sqlldr/spool.sql
exit;
EOF

SQLLDR导入:

sqlldr参数:

userid -- Oracle 的 username/password[@servicename]
control -- 控制文件,可能包含表的数据
log -- 记录导入时的日志文件,默认为 控制文件(去除扩展名).log
bad -- 坏数据文件,默认为 控制文件(去除扩展名).bad
data -- 数据文件,一般在控制文件中指定。用参数控制文件中不指定数据文件更适于自动操作
errors -- 允许的错误记录数,可以用他来控制一条记录都不能错
rows -- 多少条记录提交一次,默认为 64
skip -- 跳过的行数,比如导出的数据文件前面几行是表头或其他描述

$cat test_sqlldr.ctl 
LOAD DATA
infile "/ocfs/sql/sqlldrdata/test_spool_file.txt"
into table emp_test append
fields terminated by X'09' 
(empno,ename,job,mgr,hiredate date 'yyyy-mm-dd',sal,comm,deptno)

//以下是4种装入表的方式 
//APPEND // 原先的表有数据就加在后面 
// INSERT // 装载空表,如果原先的表有数据SQLLOADER会停止默认值 
// REPLACE // 删除旧记录(用 delete from table 语句),替换成新装载的记录
// TRUNCATE // 删除旧记录(用 truncate table 语句),替换成新装载的记录

// TERMINATED BY X'09' // 以十六进制格式'09'表示文本文件用TAB键分隔

 

$sqlldr yp/yp control='/ocfs/sql/sqlldr/test_sqlldr.ctl' log='/ocfs/sql/sqlldr/test_sqlldr.log' bad='/ocfs/sql/sqlldr/test_sqlldr.bad'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值