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
子句之后加上 APPEND
或 REPLACE
。试一试并告诉我们。
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
如标题所述,我希望有一个控制文件来处理这种情况。场景是我必须将记录插入不同的 table。例如,当(1:3)为HEA时,需要Append into table header。当 (1:3) 是 DTL 时,它需要替换成 table Detail。可以这样做吗?
我有一种情况,根据文件中的第一个字段,来自一个文件的数据会转到三个表。 WHEN
子句查看第一个字段并根据它采取行动。请注意,当遇到 'WHEN' 时,第一个字段将通过声明为 filler
来跳过。要回答您的问题,我相信您可以在 INTO TABLE
子句之后加上 APPEND
或 REPLACE
。试一试并告诉我们。
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