sqlldr加载excel数据到oracle中,同时序列自增

目的:将windows下生成的1.xlsx文件导入oracle数据库中的ring表,表中有自增id列

一:先将1.xlsx转换成1.csv格式的excel文件,因为csv默认以逗号分隔列数据,而且使用双引号引起没列数据,很好,字符集不设置也可以正常导入汉字,呵呵,如果直接导入1.xlxs文件,而且设置相关编码,相关分隔符,都是乱码,经过测试,使用fields terminated by whitespace会出现乱码(可能是我字符集没设置好),使用fields terminated by X'09'会出现条数不对和乱码!


二:写控制文件:

vim aa.txt

options (errors=-1)
load data
characterset zhs16gbk                        --如果这里不写编码,那么汉字编码会占用比较多的字节,写了编码会占用比较少的字节数
infile '/tmp/1.csv'
replace into table ring
fields terminated by ',' optionally enclosed by '"'         --如果excel一列中有的值中间有逗号,那么忽略这个逗号,将逗号也导入
trailing nullcols                                                         --这里为解决实际不存在id列而设置的
(
subject_id,
song char(300),
singer,
url char(500),
img_url char(500),
status,
the_order,
cp,
oid,
remark,
id "sqlldr_insert.nextval" --序列自动增加,实际excel中不存在这列,注意此列只能写在最后,不然会导入错误
)

三:导入本地数据库

$  sqlldr control=/tmp/aa.txt log=/tmp/aa.log

四:导入远程数据库也同样适用以上控制文件:

 

$ sqlldr username@t_remote control=/tmp/aa.txt log=/tmp/aa.log


注意:如果不按照上面的三个步骤做,或者第二步控制文件写的不一样,都会导致一些问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值