2016-03-24 74 views
0

正如標題中提到的,我希望有一個控制文件來處理這種情況。該場景是我必須將記錄插入到不同的表中。例如,WHEN(1:3)是HEA,它需要追加到表頭中。 WHEN(1:3)是DTL時,它需要替換成表格Detail。這是可能的嗎?SQL加載程序 - 使用替換和追加在同一個控制文件

回答

1

我有一種情況,根據文件中的第一個字段,來自一個文件的數據轉到三個表。 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

+0

我已經試過 REPLACE INTO表A ( BLA BLA ) REPLACE INTO表B ( BLA BLA ) ,但它不是以這種方式工作 – Jack

+0

根據鏈接,APPEND或REPLACE應該在上面提到的INTO TABLE子句之後。請嘗試,並讓我們知道。 –

相關問題