SQL Loader:没有足够的值

时间:2014-12-05 17:47:12

标签: sql oracle oracle10g sql-loader

需要帮助调试。 我的表结构如下:

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) 

总共有27个字段,我用下面的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

请帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:1)

将时间戳列的控制文件条目更改为:

RESPOND_BY_DATE EXPRESSION "CAST(SYSDATE AS TIMESTAMP)"

DATE和TIMESTAMP的数据类型不同。您只需要将SYSDATE转换为TIMESTAMP。

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