我必须管理,两个表的列之间略有不同。但我认为那是次要的。
表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 - “无效的数字”
因此,当我们说从两个具有相同模式的表中复制数据时,即使在TYPE CONSTRAINT上,我们是否仍在讨论100%IDENTICAL?
请帮忙。
在暴风雨袭击办公室之前,我不得不提到两张桌子上的列顺序不同。感谢@a_horse_with_no_name帮助我思考这个问题并给出完美的答案。
答案 0 :(得分:2)
可能两列中列的顺序不相同。
尝试明确列出列,以确保它们不会由于某种原因而混淆:
insert into db_b.target
(amount, shortname, name)
select amount, shortname, name
from db_a.source;
请注意,不列出insert子句中的列并以这种方式使用select *
通常被认为是错误的样式(即使这不是问题的原因)