sqlldr 中使用sequence
  C5bk9rm9TFUo 2023年11月02日 54 0


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

源数据在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。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  biE3E3UjTjeg   2024年01月22日   36   0   0 SQLSQL
C5bk9rm9TFUo