SQL 加载程序 - 在同一控制文件中使用替换和追加

SQL Loader - Use Replace and Append in same control file

如标题所述,我希望有一个控制文件来处理这种情况。场景是我必须将记录插入不同的 table。例如,当(1:3)为HEA时,需要Append into table header。当 (1:3) 是 DTL 时,它需要替换成 table Detail。可以这样做吗?

我有一种情况,根据文件中的第一个字段,来自一个文件的数据会转到三个表。 WHEN 子句查看第一个字段并根据它采取行动。请注意,当遇到 'WHEN' 时,第一个字段将通过声明为 filler 来跳过。要回答您的问题,我相信您可以在 INTO TABLE 子句之后加上 APPENDREPLACE。试一试并告诉我们。

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