数据仓库中数据文件加载至ODS贴源层是通过SQLLDR方式加载的,加载策略是通过CTL控制文件来实现的,CTL控制文件内容举例如下:
load data
characterset ZHS16GBK
into table O_CZZZ_GLS_GL_SUB_DAY
append
fields terminated by ','
optionally enclosed by '"'
trailing nullcols
(
BR_NO "trim(:BR_NO)",
ACC_CODE "trim(:ACC_CODE)",
CUR_NO "trim(:CUR_NO)",
ACC_HRT "trim(substr(:ACC_HRT,1,5))",
TX_DATE "trim(:TX_DATE)",
DC_IND "trim(:DC_IND)",
UP_ACC_HRT "trim(substr(:UP_ACC_HRT,1,5))",
DR_BAL "trim(:DR_BAL)",
CR_BAL "trim(:CR_BAL)",
LDD_BAL "trim(:LDD_BAL)",
LCD_BAL "trim(:LCD_BAL)",
RDD_CNT "trim(:RDD_CNT)",
RCD_CNT "trim(:RCD_CNT)",
RDD_AMT "trim(:RDD_AMT)",
RCD_AMT "trim(:RCD_AMT)",
CDD_CNT "trim(:CDD_CNT)",
CCD_CNT "trim(:CCD_CNT)",
CDD_AMT "trim(:CDD_AMT)",
CCD_AMT "trim(:CCD_AMT)",
CYC_TYPE "trim(:CYC_TYPE)",
CHG_DATE "trim(:CHG_DATE)",
CYC_NO "trim(:CYC_NO)"
)
这个CTL文件只是append,那么如果这个脚本运行两次就会出现数据翻倍情况,所以应该在append之前先delete当日数据,虽然我知道delete当日数据可以在sh中用一句话来搞定,但是毕竟脚本太多,sh中更多的用变量完成这些事情。所以问题来了,如何在ctl文件中删除当日数据呢?
请各位不吝赐教,万分感谢!