2012-06-22 32 views
0

我必須要管理員,兩個表的列之間有細微的差別。但我認爲這很微小。當試圖將數據從一個表複製到另一個表時,得到ORA 01722無效的數字

表來源有三個屬性

Amount  NUMBER(10,2) 
SHORTNAME VARCHAR2(3) 
NAME  VARCHAR2(40) 

表目標具有相同的一組其類型

Amount  NUMBER 
SHORTNAME VARCHAR2(255) 
NAME  VARCHAR2(255) 

我想表Target應該有更多的寬容屬性,但略有不同的限制其容量,但是當我運行查詢時

insert into DB_B.Target select * from DB_A.Source ; 

不幸的是我得到的流行01722錯誤:

SQL Error: ORA-01722: invalid number -- 01722. 00000 - "invalid number"

所以,當我們說兩個表具有相同的架構複製數據時,被我們甚至在類型約束談論100%相同?

請幫忙。

更新

之前雷霆暴擊的辦公室,我不得不提到兩個表列的順序是不同的。感謝@a_horse_with_no_name幫助我思考這個問題並給出完美的答案。

回答

2

也許兩個表中列的順序不相同。

儘量明確地列出列,以確保它們不會混了一些原因:

insert into db_b.target 
    (amount, shortname, name) 
select amount, shortname, name 
from db_a.source; 

注意,它通常被認爲是不好的風格列表插入子句和列以這種方式使用select *(即使這不是你問題的原因)

+0

哇,這很快!它的工作原理!馬必須有一個名字XD – Dreamer

+1

@Subarule:如果真的能修復它,那麼你剛剛學會了沒有列列表的強插方式,'select *'是邪惡的! –

+0

對,我忘記提及列的順序也不同。週末愉快 ! – Dreamer

相關問題