在SQL LOADER控制文件中使用案例陈述

时间:2019-03-20 18:50:32

标签: oracle oracle11g sql-loader

我有一个控制文件,该文件将文本加载到oracle中,但是我试图剥离电话号码示例1-469-428-5920到469-428-5920的前3位数字,请参见下面的控制文件。语法应该是什么?

我在下面始终遇到错误,请帮助

谢谢


options (ERRORS=1000, SKIP=2)
load data 
infile '/clients/vca2/data/API/ADHOC_LOAD/VCA_RP_Hospital_Website_Master_List_VCA.CSV'
replace
into table VCABARK_CDI_DV.RP_HOSPITAL_MASTER_LIST
fields terminated by '|'
OPTIONALLY ENCLOSED BY '"' AND '"'
trailing nullcols
(
    HOSPITAL_EXT_NUMBER, 
    REGION, 
    HOSPITAL_NAME, 
    ADDRESS_1, 
    CITY , 
    STATE, 
    POSTAL_CODE, 
    PHONE "CASE WHEN SUBSTR(:PHONE,1,2) = '1-'  THEN ‘SUBSTR(:PHONE,3)’  ELSE ‘:PHONE’ END",
        RCF_PHONE,
    FAX , 
    EMAIL ,
    WEBSITE_CLASS, 
    DOMAIN, 
    SHORTNAME, 
    PMS, 
    INDICATOR_24_HOUR, 
    CARECLUB, 
    HOME_DELIVERY, 
    APPOINTMENT_CTA, 
    FREE_FIRST_EXAM, 
    AAHA , 
    AAFP_MEMBER, 
    CAT_FRIENDLY,
    FEAR_FREE , 
    LOW_STRESS, E
    VECCS, 
    FACEBOOK_URL, 
    GMB_URL , 
    YELP_URL, 
    BOOK_URL, 
    REQUEST_URL,
        HOURS_OPERATIONS_URL,
    HD_URL_SUBDOMAIN, 
    HD_URL_ORIGINAL, 
    PET_PORTAL_URL, 
    AIS_CLINIC_ID, 
    AIS_TOKEN
 )

2 个答案:

答案 0 :(得分:1)

您还没有说出遇到的错误,但是在case表达式中应该使用双引号(大写或其他形式)。代替:

PHONE "CASE WHEN SUBSTR(:PHONE,1,2) = '1-'  THEN ‘SUBSTR(:PHONE,3)’  ELSE ‘:PHONE’ END",

使用:

PHONE "CASE WHEN SUBSTR(:PHONE,1,2) = '1-' THEN SUBSTR(:PHONE,3) ELSE :PHONE END",

答案 1 :(得分:1)

您也可以保留最后12个:

PHONE "SUBSTR(:PHONE, -12, 12)",