一个csv文件,要求将数据插入到两张表w_work1,w_work2中,
w_work1表主键:W_SEQ,且是w_work2表的外键
w_work2表主键:W_SEQ,KNSNG_CD;
在写ctl文件的时候,into table w_work1很顺利,
到into table w_work2时,表中KNSNG_CD需要根据一段sql文从第三张表中查出,但是查出的数据条数是不确定的
导致在sqlldr时,csv中一条数据可能对应多条KNSNG_CD
ctl文件:
load data
infile 'test.csv'
replace
into table w_work1
fields terminated by ',' optionally enclosed by '"'
trailing nullcols
(
W_SEQ RECNUM,
......
)
into table w_work2
fields terminated by ',' optionally enclosed by '"'
trailing nullcols
(
W_SEQ RECNUM,
KNSNG_CD "select......(csv中的数据作为条件)" --查询结果条数不确定
)
需求是要把查询的结果都插入到w_work2表中
例如:csv中第一行数据,会检索出3条KNSNG_CD,那么就要在w_work2中插入(1,KNSNG_CD1),(1,KNSNG_CD2),(1,KNSNG_CD3)
csv中第二行数据,会检索出2条KNSNG_CD,那么就要在前面的基础上继续插入(2,KNSNG_CD1),(2,KNSNG_CD2)我试过把into table w_work2部分去掉,用一个function代替,写到into table w_work1中,但是因为主外键的关系,会发生异常
所以我想问一下还有别的方法能解决这个问题吗?
还是说sqlldr无法做到这个需求???希望各位大侠帮小弟一把!!!
w_work1表主键:W_SEQ,且是w_work2表的外键
w_work2表主键:W_SEQ,KNSNG_CD;
在写ctl文件的时候,into table w_work1很顺利,
到into table w_work2时,表中KNSNG_CD需要根据一段sql文从第三张表中查出,但是查出的数据条数是不确定的
导致在sqlldr时,csv中一条数据可能对应多条KNSNG_CD
ctl文件:
load data
infile 'test.csv'
replace
into table w_work1
fields terminated by ',' optionally enclosed by '"'
trailing nullcols
(
W_SEQ RECNUM,
......
)
into table w_work2
fields terminated by ',' optionally enclosed by '"'
trailing nullcols
(
W_SEQ RECNUM,
KNSNG_CD "select......(csv中的数据作为条件)" --查询结果条数不确定
)
需求是要把查询的结果都插入到w_work2表中
例如:csv中第一行数据,会检索出3条KNSNG_CD,那么就要在w_work2中插入(1,KNSNG_CD1),(1,KNSNG_CD2),(1,KNSNG_CD3)
csv中第二行数据,会检索出2条KNSNG_CD,那么就要在前面的基础上继续插入(2,KNSNG_CD1),(2,KNSNG_CD2)我试过把into table w_work2部分去掉,用一个function代替,写到into table w_work1中,但是因为主外键的关系,会发生异常
所以我想问一下还有别的方法能解决这个问题吗?
还是说sqlldr无法做到这个需求???希望各位大侠帮小弟一把!!!
在这里地方用动态sql来解决你的问题。
to ojuju10:外部表的使用时sqlldr里的内容吗,是不是不用ctl文件,还是在ctl文件里用外部表?我没用过,不是很明白,请解释一下
to oraclelogan:sql文里表和项目都已经确定了