需要帮助调试。 我的表结构如下:
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
请帮助我。提前谢谢。
答案 0 :(得分:1)
将时间戳列的控制文件条目更改为:
RESPOND_BY_DATE EXPRESSION "CAST(SYSDATE AS TIMESTAMP)"
DATE和TIMESTAMP的数据类型不同。您只需要将SYSDATE转换为TIMESTAMP。
当进程尝试将SYSDATE放入TIMESTAMP时,将引发ORA-00947。 SYSDATE没有TIMESTAMP所需的相同小数秒组件。