如标题中所述,我希望有一个控制文件来处理这种情况。场景是我必须将记录插入到不同的表中。例如,WHEN(1:3)是HEA,它需要附加到表头中。 WHEN(1:3)是DTL,需要将其替换为表格详细信息。有可能这样做吗?
答案 0 :(得分:1)
我有一种情况,根据文件中的第一个字段,一个文件中的数据会转到三个表。 WHEN
子句查看第一个字段并根据该字段执行操作。请注意,当满足'WHEN'时,会通过将其声明为filler
来跳过第一个字段。要回答您的问题,我相信您可以将APPEND
或REPLACE
放在INTO TABLE
子句之后。试一试,让我们知道。
OPTIONS (DIRECT=TRUE)
UNRECOVERABLE
LOAD DATA
APPEND
INTO TABLE TABLE_A
WHEN (01) = 'CLM'
FIELDS TERMINATED BY '|' TRAILING NULLCOLS
( rec_skip filler POSITION(1)
,CLM_CLAIM_ID CHAR NULLIF(CLM_CLAIM_ID=BLANKS)
...
)
INTO TABLE TABLE_B
WHEN (01) = 'SLN'
FIELDS TERMINATED BY '|' TRAILING NULLCOLS
( rec_skip filler POSITION(1)
,SL_CLAIM_ID CHAR NULLIF(SL_CLAIM_ID=BLANKS)
...
)
INTO TABLE TABLE_C
WHEN (01) = 'COB'
FIELDS TERMINATED BY '|' TRAILING NULLCOLS
( rec_skip filler POSITION(1)
,COB_CLAIM
...
)
更多信息:http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_control_file.htm#i1005657