在命令行下执行 Oracle 的 sqlldr 命令,可以看到它的详细参数说明,要着重关注以下几个参数:
userid -- Oracle 的 username/password[@servicename]
control -- 控制文件,可能包含表的数据
-------------------------------------------------------------------------------------------------------
log -- 记录导入时的日志文件,默认为 控制文件(去除扩展名).log
bad -- 坏数据文件,默认为 控制文件(去除扩展名).bad
data -- 数据文件,一般在控制文件中指定。用参数控制文件中不指定数据文件更适于自动操作
errors -- 允许的错误记录数,可以用他来控制一条记录都不能错
rows -- 多少条记录提交一次,默认为 64
skip -- 跳过的行数,比如导出的数据文件前面几行是表头或其他描述
一、命令行导入数据
1、利用plsql导出数据 .scv文件
x3755test45-bala1[/CBBSAX1_data/bala1/asiainfo/lyy] cat users_data.csv
" ","USER_NAME","SHELL_TYPE"
"1","root","/bin/bash"
"2","bin","/sbin/nologin"
"3","daemon","/sbin/nologin"
"4","adm","/sbin/nologin"
"5","lp","/sbin/nologin"
"6","sync","/bin/sync"
"7","shutdown","/sbin/shutdown"
"8","halt","/sbin/halt"
"9","mail","/sbin/nologin"
"10","uucp","/sbin/nologin"
2、建立ctl文件
x3755test45-bala1[/CBBSAX1_data/bala1/asiainfo/lyy]cat user_shell.ctl
OPTIONS (skip=1,rows=128) -- sqlldr 命令显示的选项可以写到这里边来,skip=1 用来跳过数据中的第一行
LOAD DATA
INFILE "users_data.csv" --指定外部数据文件,可以写多个 INFILE "another_data_file.csv" 指定多个数据文件
--这里还可以使用 BADFILE、DISCARDFILE 来指定坏数据和丢弃数据的文件,
INTO TABLE user_shell -- 要插入记录的表(向表中插入数据,也可以改成追加append)
Fields terminated by "," -- 数据中每行记录用 "," 分隔
Optionally enclosed by '"' -- 数据中每个字段用 '"' 框起,比如字段中有 "," 分隔符时
trailing nullcols --如要导入源文件此列内容为空,在导入到表中,此列内容就是null
(
virtual_column FILLER, ----------------这是一个虚拟字段,用来跳过由 PL/SQL Developer 生成的第一列序号
user_name char(20), --字段可以指定类型,否则认为是 CHARACTER 类型, log 文件中有显示
shell_type char(50)
)
3、使用sqlldr的命令行导入数据sqlldr js4/yjaz91b+wl@ORA11G control=user_shell.ctl
二、使用.sh 执行sqlldr插入数据
1、将要插入的数据放入到test.dat文件中
x3755test45-bala1[/CBBSAX1_data/bala1/asiainfo/lyy]cat test.dat
root,/bin/bash
bin,/sbin/nologin
daemon,/sbin/nologin
adm,/sbin/nologin
lp,/sbin/nologin
sync,/bin/sync
shutdown,/sbin/shutdown
halt,/sbin/halt
mail,/sbin/nologin
2、建立控制文件a.ctl
x3755test45-bala1[/CBBSAX1_data/bala1/asiainfo/lyy]cat a.ctl
load data
infile 'test.dat'
append into table user_shell-----向表中追加数据
fields terminated by "," TRAILING NULLCOLS --如要导入源文件此列内容为空,在导入到表中,此列内容就是null
(user_name,shell_type)
3、执行sqlldr.sh导入数据到表中
x3755test45-bala1[/CBBSAX1_data/bala1/asiainfo/lyy]cat sqlldr.sh
FILE_NAME_CTL=a.ctl
sqlldr userid=js4/yjaz91b+wl@ORA11G control=$FILE_NAME_CTL rows=20000 log=a.log bad=a.bad
x3755test45-bala1[/CBBSAX1_data/bala1/asiainfo/lyy]sh sqlldr.sh
阅读(1722) | 评论(0) | 转发(0) |