linux命令验证sqlldr,Linux:sqlldr命令

第一步:写一个 ctl格式的控制文件

CTL 控制文件的内容 :

load data --1. 控制文件标识

infile'xxx.txt' --2. 要导入的数据文件名

insert into table test--3. 将文件插入到数据库的 test 表中

fields terminated by X'09' --4. 用于分割一行中各个属性值的符号(例如每个属性值用逗号 分割 , 那么就把 X'09'改为 ‘ ,’)

(id , username ,passwprd ,......) --5. test表中对应的属性名

load data

infile 'E:/user_data_one_week/zhejiang_user_data.log'insert into table day_data

fields terminated by '|'

trailing nullcols

--(数据中某些属性可能是 null 值 , 如果不加入这行导入到数据库的时候就会自动跳过null值的列, 这样数据插入后就会属性和值对应不上)

(time,

user_id,

type,

longitude,

latitude,

height,

content char(10000))

补充几点 .

1. 我在第三步中运用了 insert into  table还有以下几个值

a.insert  为缺省方式,插入表中时要求表为空 ,不然会报错

b.append , 在表中追加新纪录 , 所以表不为空插入的时候也不会报错

c.replace , 删除旧记录 , 替换成新装载的记录 (明明我应该用这种方法 , 但是我对 insert情有独钟 ,好吧,我是导入完才看到有这个的)

d .reuncate  同上  (也同上没用过 )

2.表中属性 content 的问题  --  CLOB 类型插入问题

当使用sqlldr加载很长的字符串(超过4000)到表中的clob类型中时,老是报错: 数据文件的字段超出最大长度.查找相关资料后得知,sqlldr每次读入文件中数据流的数据类型默认为CHAR ,长度为 255 .所以只要超过255字符的段都会报这个错.解决方法很简单,在控制文件中字段后添加上char(1000000),例如:

LOAD DATA

INFILE *

INTO TABLE DEMO

TRUNCATE

FIELDS TERMINATED BY ','

(d1 ,

d2 char(1000000)

)

其中表demo的列d2是clob类型,当然1000000只是随便用的一个大数字,只要保证加载的长度不超这个数字就成

第二步 :  在 cmd 命令窗口中写入导入语句

->  sqlldr  userid = 用户名 / 密码 @ 数据库名    control = 之前写的ctl控制文件的地址     bad = E:/ bad.bad    log = E:/log.log

->  sqlldr  userid = everyday/123456@orcl   control = E:/data.ctl   bad=E:/bad.bad   log = E:/ log.log

oracle  sqlldr导入文件只需要两步

1.  写CTL 控制文件

2 . 在cmd 命令窗口中写入导入语句

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值