0

両方のテーブルの列にわずかな違いがあることを管理する必要があります。でもそれは些細なことだと思いました。

テーブル Source には 3 つの属性があります

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

テーブル Target には同じ属性のセットがありますが、それらのタイプの制約がわずかに異なります

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

Targetテーブルの容量をもっと許容する必要があると思ったのですが、クエリを実行すると

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

残念ながら、よくある 01722 エラーが発生します。

SQL エラー: ORA-01722: 無効な番号 -- 01722.00000 - 「無効な番号」

では、同じスキーマを持つ 2 つのテーブルからデータをコピーするとき、TYPE CONSTRAINT についても 100% IDENTICAL について話しているのでしょうか?

助けてください。

アップデート

雷雨がオフィスを襲う前に、両方のテーブルの列の順序が異なっていることを述べておかなければなりません。@a_horse_with_no_name のおかげで、この問題を解決し、完璧な答えを得ることができました。

4

1 に答える 1

2

2 つのテーブルの列の順序が同じでない可能性があります。

何らかの理由で列が混同されていないことを確認するために、列を明示的にリストしてみてください。

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

一般に、挿入句に列をリストせ、そのように使用するのは悪いスタイルと見なされることに注意してくださいselect *(それが問題の原因ではない場合でも)

于 2012-06-22T21:28:48.250 に答える