用sqlldr把本地的txt文件导入到有主键的表怎么做?????

yekongswz 2012-04-17 04:12:46
在oracle数据库中有一个表User(id(主键),name,password)

现在我要用sqlldr把本地的txt文件导入到这个表中,由于oracle数据库中不能自动生成主键,
我的User.ctl文件该怎么写,我建了一个序列seq_user_id
在txt文件中如下:
seq_user_id.nextval,张三,124
seq_user_id.nextval,小三,1355

ctl文件如下:
OPTIONS (SILENT = (ALL),DIRECT=TRUE,PARALLEL=TRUE)
UNRECOVERABLE
LOAD DATA INFILE 'E:\User.txt'
APPEND INTO TABLE TB_DISKINFO
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(id
,name
,password
)

可是这样不行啊,请求大侠?????
...全文
248 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yekongswz 2012-04-19
  • 打赏
  • 举报
回复
这样是可以的,要先建一个序列seq_user_id,不过DIRECT=TRUE,PARALLEL=TRUE
UNRECOVERABLE这个不能要,这个并行导入的时候好像是不能用的,去掉是可以的,多谢啊
[Quote=引用 2 楼 的回复:]
首先肯定不是在txt文件里写Seq名,这是数据文件。就算要写,也应该是ctrl文件里写,试试这样


OPTIONS (SILENT = (ALL),DIRECT=TRUE,PARALLEL=TRUE)
UNRECOVERABLE
LOAD DATA INFILE 'E:\User.txt'
APPEND INTO TABLE TB_DISKINFO
FIELDS TERMINATE……
[/Quote]
mg_chen 2012-04-18
  • 打赏
  • 举报
回复
首先肯定不是在txt文件里写Seq名,这是数据文件。就算要写,也应该是ctrl文件里写,试试这样


OPTIONS (SILENT = (ALL),DIRECT=TRUE,PARALLEL=TRUE)
UNRECOVERABLE
LOAD DATA INFILE 'E:\User.txt'
APPEND INTO TABLE TB_DISKINFO
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(id "seq_user_id.nextval"
,name
,password
)


如果上述方式不可以,建议针对该字段设置一个触发器,在导入后自动赋值
如果这样还不行,那就先把这个字段给干掉再导
rucypli 2012-04-17
  • 打赏
  • 举报
回复
建议发到oracle版

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧