2012-05-15 30 views
0

我試圖從Netezza插入數據到Oracle.Here是我的插入如下。但他們不工作,並把我上面的錯誤。ORA-01861錯誤

INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,'2012/02/12'); 
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,'2012/02/09'); 
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,'2012/02/21'); 
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,'2012/02/23'); 

我的表格結構如下。

CREATE TABLE AM_CTL_DDS_LOAD 
(
    MAS_DIV_CD VARCHAR(5), 
    LD_SEQ_NBR INTEGER NOT NULL, 
    TUNING_DT DATE NOT NULL 
); 
+1

你介意給我們一個表結構的快速概覽嗎? – Sebas

+3

ORA-01861與格式化字符串的問題有關(http://www.techonthenet.com/oracle/errors/ora01861.php)。看起來你試圖強制字符串進入日期字段,但是很難說沒有AM_CTL_DDS_LOAD的DDL。 – FrustratedWithFormsDesigner

回答

3

ORA-01861: literal does not match format string錯誤意味着AM_CTL_DDS_LOAD表的第三列被定義爲一個DATE,不是VARCHAR2,並且字符串到日期的隱式轉換的失敗,因爲會話的NLS_DATE_FORMAT不是' YYYY/MM/DD」。解決此問題的最佳方法是明確插入DATE而不是VARCHAR2,方法是使用適當的格式掩碼明確調用TO_DATE

INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,to_date('2012/02/12', 'YYYY/MM/DD')); 
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,to_date('2012/02/09', 'YYYY/MM/DD')); 
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,to_date('2012/02/21', 'YYYY/MM/DD')); 
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,to_date('2012/02/23', 'YYYY/MM/DD'));