2014-12-05 35 views
0

需要帮助调试。 我的表结构如下:SQL加载程序:值不足

RESPOND_BY_DATE    TIMESTAMP(6) , 
DESCRIPTION     VARCHAR2(300) , 
AXBCRULE    NUMBER(4)  NOT NULL, 
SEGMENT      VARCHAR2(100) , 
ASSIGN_UNIQUE_BALCON   VARCHAR2(1) , 
BALCON_OFFER_TYPE    VARCHAR2(3) , 
APR       VARCHAR2(10) , 
FEE_YN       VARCHAR2(1) , 
FEE_PERCENT     VARCHAR2(10) , 
FEE_AMOUNT_MAX     VARCHAR2(10) , 
BALCON_DURATION_TYPE   VARCHAR2(7) , 
BALCON_DURATION    VARCHAR2(3) , 
BALCON_CAP_AMOUNT    VARCHAR2(10) , 
INTERIM_APR     VARCHAR2(10) , 
INTERIM_DURATION_TYPE   VARCHAR2(7) , 
INTERIM_DURATION    NUMBER(3)  , 
BALCON_ID      NUMBER(7)  , 
CHANNEL_ID    VARCHAR2(7) NOT NULL , 
SUBCHANNEL_ID   VARCHAR2(7) NOT NULL , 
PROGRAM_NAME   VARCHAR2(45) NOT NULL, 
DATE_INITIATED   TIMESTAMP(6) NOT NULL, 
ERROR_MESSAGE     VARCHAR2(1024) , 
STATUS       NUMBER(2)  , 
USER_CODE      VARCHAR2(10) , 
WARNING_MESSAGE    VARCHAR2(1024) , 
BALCON_OFFER_SEQUENCE NUMBER(2)  NOT NULL, 
CAMPAIGN_TAG     VARCHAR2(3) 

它总27fields和我用下面的CTL文件来加载它:当我尝试这个测试数据加载到表

OPTIONS (LOAD=1) 
load data 
     infile * 
    replace into table test_table 
    (RESPOND_BY_DATE  SYSDATE, 
DESCRIPTION   CONSTANT 'test',   
AXBCRULE    CONSTANT '011',   
SEGMENT    CONSTANT '12',   
ASSIGN_UNIQUE_BALCON CONSTANT '1',   
BALCON_OFFER_TYPE  CONSTANT '1',   
APR     CONSTANT '12',   
FEE_YN     CONSTANT 'Y',   
FEE_PERCENT   CONSTANT '009',   
FEE_AMOUNT_MAX   CONSTANT '12',   
BALCON_DURATION_TYPE CONSTANT '1',   
BALCON_DURATION  CONSTANT '12',   
BALCON_CAP_AMOUNT  CONSTANT '0123',  
INTERIM_APR   CONSTANT '1',   
INTERIM_DURATION_TYPE CONSTANT 'N',   
INTERIM_DURATION  CONSTANT '1',   
BALCON_ID    CONSTANT '1',   
CHANNEL_ID  CONSTANT '1',   
SUBCHANNEL_ID   CONSTANT '1',   
PROGRAM_NAME   CONSTANT '1',   
DATE_INITIATED   SYSDATE,   
ERROR_MESSAGE   CONSTANT '1',   
STATUS     CONSTANT '1' ,   
USER_CODE    CONSTANT '1',   
WARNING_MESSAGE  CONSTANT '1',   
BALCON_OFFER_SEQUENCE CONSTANT '1', 
CAMPAIGN_TAG CONSTANT '1' 
) 

,我我正面临着下面的错误:

Record 1: Rejected - Error on table "schema"."TEST_TABLE". 
ORA-00947: not enough values 

请帮助我。提前致谢。

+0

我找不到控制文件的任何问题。你能发布你的控制日志文件的内容吗? – Incognito 2014-12-05 20:37:35

回答

1

更改控制文件条目的时间戳列的样子:

RESPOND_BY_DATE EXPRESSION "CAST(SYSDATE AS TIMESTAMP)" 

日期和TIMESTAMP是不一样的数据类型。您只需要将SYSDATE转换为TIMESTAMP。

当进程尝试将SYSDATE放入TIMESTAMP时,ORA-00947正在产生。 SYSDATE没有与TIMESTAMP所需的小数秒组件相同的小数秒组件。

+0

Thanks.I使用“trunc(sysdate)”,这也是个窍门。 – gaurav 2014-12-08 07:34:48

+0

有趣。我猜trunc()会自动转换为timestamp来处理它。 – 2014-12-09 14:11:45