0

我必须管理两个表中的列之间存在细微差别。但我认为那是次要的。

表 Source 具有三个属性

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 -“无效号码”

因此,当我们说从具有相同架构的两个表中复制数据时,我们是在谈论 100% IDENTICAL 甚至在 TYPE CONSTRAINT 上吗?

请帮忙。

更新

在雷雨袭击办公室之前,我不得不提一下,两张桌子上的列顺序是不同的。感谢@a_horse_with_no_name 帮助我思考这个问题并给出完美的答案。

4

1 回答 1

2

也许两个表中列的顺序并不相同。

尝试明确列出这些列,以确保它们不会由于某种原因而混淆:

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

请注意,列出插入子句中的列并以select *这种方式使用通常被认为是不好的风格(即使这不是问题的原因)

于 2012-06-22T21:28:48.250 回答