现在的位置: 首页 > 综合 > 正文

sqlldr 命令详解

2013年10月17日 ⁄ 综合 ⁄ 共 1754字 ⁄ 字号 评论关闭
sqlldr命令示例1:
以下保存为控制脚本:
load data --开始加载数据
infile "exp.tsv" --指定导入文件路径(包含文件路径及完整名称)
append into table test --向表test中追加数据
fields terminated by X'09' --设置分隔符(X’09’表示制表符:Tab)
(col1, col2, col3) --数据库对应的列名
在命令行下运行:sqlldr user_name/password@tnsname control=控制文件名
“parallel=true”表示:使用并发操作
sqlldr命令示例2:
options(skip=1, rows=1000) --sqlldr命令行的选项可以写在括号中;“skip=1”跳过数据文件中第一行
load [data]
infile “imp.tsv”“str X’7C0D0A’”--指定外部数据文件;同一目录直接使用文件名。“str X’ 7C0D0A’”该命令重新设置数据文件中数据行记录结束符为:|\r\n。若数据在本文件中(数据在begindata命令行下),该指令改为:infile *
infile “imp2.tsv”--指定第二个外部数据文件;多个外部数据文件写法相同。此处没有指定数据行记录结束符,默认:\r\n
badfile “imp.bad”--此处可以使用badfile、discardfile来指定错误数据文件和丢弃数据文件路径名称
insert|append|replace|truncate  --操作类型。目标数据库表中无数据/目标数据库表中有数据/使用delete from table_name语句删除目标数据表中原有数据/使用truncate table table_name删除数据库中原有数据
into table table_name--插入数据到表:table_name中
when name<>’admin’ --when语句选择符合条件的导入数据;此处表示当name列值不等于“admin”时导入数据
fields terminated by “,” --数据文件中,每行数据列间隔符。可以写在每一列后面。Fields terminated by X’09’表示制表符为分隔符
optionally enclosed by ‘#’ –数据文件中,每个数据字段使用“#”引起,比如数据字段中含有“,”分隔符时
trailing nullcols  --表的字段没有对应的值时允许为空
(
seq "seqName.nextval", --seqName表示使用的索引;若使用将“seq"seqName.nextval"”整句替换为“seq sequence(n, 1)” ,则表示从n开始,以1自增。n也可以使用max替代,表示该列最大值+1开始增加。
id number,--字段可以指定数据类型,否则默认为character数据类型。日志文件中可查看对应字段导入类型
name “upper(:name)”, --调用数据库函数upper()
birthday date “YYYY-MM-DD HH24:MI:SS”,    --日期格式处理;若目标数据库表该字段为date类型,此处必须转换;格式推荐:YYYY-MM-DD HH24:MI:SS
home_page filler,       --filler表示该字段忽略,不导入数据,数据文件中对应列也被忽略
address “ ‘浙江省’ || :address”, --拼接数据,“:address”表示该列值
login_power nullif(login_power = ‘0’) , --当该列值为字符“0”时,该列自动赋值为:NULL
comp position(100:110) ,     --从第100个字符到110个字符位置为该字段列值
comp_address position(*, 120) --开始位置在前一字段的结束位置
)
begindata --若infile指定编辑方式为:infile *,则以下为数据部分
1,name1,2003-1-1 19:29:29,http://www.xx.cn,杭州滨江区,0,浙江万鼎,文三路
2,name2,2002-2-2,http://www.xxx.cn,杭州西湖区,浙江万鼎,文三路

抱歉!评论已关闭.