小弟有需要要把一有200W条的数据导入Oracle数据库,但是前面有人设计的时候这个表是有表自增字段的,使用了触发器。无论是我使用Pl/SQL还是Sqlldr都面临一个问题,那就是ID不能为空的问题,而且是要在原来的ID后面往后加一。数据库中表的字段大致如下(虚拟的):
id name age
我要的文本中只有name的值,如
aa
bb
cc
...我遇到的困难就是解决ID不为空且自增的问题,请朋友多多指教,谢谢了。
id name age
我要的文本中只有name的值,如
aa
bb
cc
...我遇到的困难就是解决ID不为空且自增的问题,请朋友多多指教,谢谢了。
update tb a set id=(select rn from (select rownum rn,name from tb)b where a.name=b.name)
create sequence my_sequence start with 33333;然后使用类似如下的控制文件:LOAD DATA
INFILE 'xx.txt
APPEND
INTO TABLE mailing_list
FIELDS TERMINATED BY ","
(rec_no "my_sequence.nextval",
...
..
)
load data
infile 'relation.csv'
append into table loadertest
fields terminated by " "
TRAILING NULLCOLS
(cardcode,state,id "seq_loadertest.nextval")注意导入的时候列的位置create sequence SEQ_LOADERTEST
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
cache 20;表结构create table LOADERTEST
(
ID NUMBER not null,
CARDCODE VARCHAR2(100),
STATE VARCHAR2(100)
)