oracle抽取用户A的tmp表数据至用户B的tmp表

方案:
1、用navicate使用用户A的账号连接oracle,导出tmp表的结构sql脚本;
2、用navicate使用用户B的账号连接oracle,执行第一步骤tmp表的sql脚本在用户B下创建tmp表;
3、在用户B下使用grant insert on B.tmp to A,使得用户A有向用户B的tmp表插入数据的权限;
4、在用户A下执行insert into B.tmp(字段列表) select 字段列表 from A.tmp where 条件。

在实践过程中,因为用户A的tmp表用到了alter table tmp add constraint PK_ODC_ZJ primary key (ODC_ZJ) using index。当在用户B下创建tmp表时也执行了这条语句时,使用insert into select语句会报ORA-00001: unique constraint violated错误。
然后本人将用户B下的tmp表drop掉,重新建表时将alter table tmp add constraint PK_ODC_ZJ primary key (ODC_ZJ) using index语句去掉,使用insert into select语句就没报错了。最后执行alter table语句也没报错。
其中的原理也没弄清楚。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容