oracle中sqlldr和sqlplus使用

本文详细介绍了Oracle中的两个命令行工具:sqlldr和sqlplus。sqlldr用于高效地导入数据,通过控制文件进行数据格式定义,并展示了多种数据源的导入示例,包括并行加载。sqlplus则用于执行SQL命令,文中说明了其连接数据库、设置参数、处理换行及执行SQL文件的方法,并给出实例。
摘要由CSDN通过智能技术生成

oracle中sqlldr和sqlplus使用

一、简介

sqlldr和sqlplus是oracle下的命令行工具,均位于/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/目录下,sqlldr可用于数据的导入,sqlplus可直接执行sql命令,sqlplus结合spool命令可对数据导出。下面分别介绍。

二、sqlldr

sqlldr可用与数据的导入。

2.1 sqlldr使用
2.1.1 sqlldr命令

sqlldr命令格式如下:

SQLLDR keyword=value [,keyword=value,...]

核心参数有:

userid:用户名密码等,格式: username/password[@servicename]
control:控制文件
log:日志文件
data:数据文件
bad:坏数据文件
discard:丢弃数据文件
discardmax:丢弃数据最大值,默认全部
error:允许出错的记录数,默认50
rows:多少条记录提交一次,默认64
skip:跳过开头的多少条记录,默认0
skip_index_maintenance:设置索引失效skip_index_maintenance=true, 注意使用后需要重建索引
bindsize:每次提交记录的缓冲区大小,单位字节,默认25600
readsize:每次读取记录的缓冲区大小,单位字节,默认1048576
silent:禁止输出信息(如header,feedback,errors,discards,partitions等)
direct:使用直通路径方式导入,默认false
parallel: 并行导入(注意:parallel并不是一个sqlldr同时起多个线程加载数据,而是不锁住加载表,允许别的路径加载。正确使用方式是同时用多个sqlldr加载数据)

更详细参数通过命令:

bin/sqlldr
2.1.2 控制文件

示例控制文件stu.ctl如下:

-- 控制文件stu.ctl
options(skip=1,rows=128) --sqlldr命令显示,skip=1表示跳过第一行
load drop database infile 'x1.csv' 'x2.csv' --导入的外部文件,可以多个。设置为*表示数据就在当前控制文件中
truncate  --清除表中原有数据, 还可填值,insert:插入(表一开始为空);append:追加记录 replace:删除(delete from xxx)旧记录,插入新记录; truncate:删除(truncate table xxx)旧记录,插入新记录; 默认insert
into table stu --要插入的表
fields terminated by ','  --每行记录各字段间用逗号分割
optionally enclosed by "'"  --每个字段用单引号括起
trailing nullcols --字段没值时允许为null
(
    virtual_column filler, --虚拟字段,用于跳过pl/sql 生成的第一列序号
    id int  primary key,
    no varchar(30) DEFAULT '',
    name varchar(60) DEFAULT '',
)

begindata  --以下为数据
9001,banana1
2.2 sqlldr示例
2.2.1 数据在控制文件中

控制文件stu.ctl如下:

options(skip=1,rows=128) --sqlldr命令显示,skip=1表示跳过第一行
load data infile * --导入的外部文件,可以多个
append
into table stu --要插入的表
fields terminated by ','  --每行记录各字段间用逗号分割
trailing nullcols --字段没值时允许为null
(no,name)

begindata  --以下为数据
no,name
9001,banana1
9002,banana2
9003,banana3

执行命令:

#数据直接在控制文件中
/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/sqlldr userid=school_user/root control=stu.ctl
2.2.2 数据在控制文件内指定的数据文件中

控制文件stu1.ctl如下:

load data infile 'stu1.csv' --导入的外部文件,可以多个
append
into table stu --要插入的表
fields terminated by ','  --每行记录各字段间用逗号分割
trailing nullcols --字段没值时允许为null
(
no,
name
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值