SQL Loader - 在同一个控制文件中使用Replace和Append

时间:2016-03-24 01:58:30

标签: oracle sql-loader

如标题中所述,我希望有一个控制文件来处理这种情况。场景是我必须将记录插入到不同的表中。例如,WHEN(1:3)是HEA,它需要附加到表头中。 WHEN(1:3)是DTL,需要将其替换为表格详细信息。有可能这样做吗?

1 个答案:

答案 0 :(得分:1)

我有一种情况,根据文件中的第一个字段,一个文件中的数据会转到三个表。 WHEN子句查看第一个字段并根据该字段执行操作。请注意,当满足'WHEN'时,会通过将其声明为filler来跳过第一个字段。要回答您的问题,我相信您可以将APPENDREPLACE放在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