ITPub博客

首页 > 数据库 > Oracle > SQLLDR中使用SEQUENCE

SQLLDR中使用SEQUENCE

原创 Oracle 作者:wilson2006 时间:2019-03-27 12:00:07 0 删除 编辑

昨日碰到的又一将其他数据库中数据导入ORACLE数据库中的例子,其中用到了SEQUENCE来实现一个主键的自动导入,

[@more@]源数据在SQL SERVER中,因为开发人员已经将其导出成EXCEL文件了,所以放弃了使用HS,使用SQL LOADER干这个活,
问题出在一个列的解决上,要求是在原来数据的基础(有主键)上增加一个新的主键,作导入目标表的主键,
初始尝试直接建立一个SEQUENCE来解决这个问题,结果屡屡报错,最终的解决方法是使用了下面的一个SQLLDR的序列函数,
下面是CTL文件的写法,
options (skip = 1)
load data
infile 'aaa.csv'
Append into table bbb
fields terminated by ','
OPTIONALLY ENCLOSED BY '"'
trailing nullcols
(ID sequence(max,1),
aaa,
bbb,
ccc,
...
)
其中sequence(n,1) 代表序列start with max increment by 1,
值得指出的是,当指定sequence(max,1)时(max大小写不区分) ,sqlldr将自动找到列中的最大值,然后生成并使用这个虚拟的序列来用于插入数据,很好很强大的sqlldr。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/768134/viewspace-1003165/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-11-04

  • 博文量
    35
  • 访问量
    32342