首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle中两张不同构造的表(部分字段相同)数据导入

2012-09-20 
oracle中两张不同结构的表(部分字段相同)数据导入使用存储过程实现,因为我要使用job来定时执行。有两张表A(

oracle中两张不同结构的表(部分字段相同)数据导入
使用存储过程实现,因为我要使用job来定时执行。
有两张表A(Aid,name,age,sex,address,class,tel)和B(Bid,name,age,sex,company,salary,class)
将A表中和B表中相同的字段(字段名相同)插入到B表中。
例如A表中的数据(1,‘张三’,23,‘男’,‘北京’,‘计算机’,‘123456’)插入到B表中(null,‘张三’,23,‘男’,null,null,‘计算机’)
请问各位大神,该如果使用存储过程去实现。事先,我知道A表和B表具有相同的字段,但是我并不知道哪些字段是相同的,也就是说,需要写代码去判断两张表的相同字段。

[解决办法]

SQL code
--判断名字相同字段SQLselect column_name from user_tab_columns t where tale_name in('A','B')group by column_name  having count(1) = 2;--按照这个sql进行for循环,把你的插入sql拼接起来就行了。--有个小窍门,把B表的每一个字段都设置上默认值,这样找到相同的字段之后只需要insert b(name,age....) select name,age... from a;--其余未指定字段,为默认值。
[解决办法]
游标循环
insert b(name,age....) select name,age... from a;

[解决办法]
merge into
探讨

引用:
SQL code
declare
sql_txt varchar2(1000);
sql_txt_columns varchar2(1000);
begin
sql_txt := 'insert into B (';
for rec in (select t1.column_name from
(select column_name from ……
……

[解决办法]
merge into 即可
[解决办法]
探讨
用你的方法,我写好了,不过怎样避免重复的数据呢,比方说name字段是主键,从A导入到B时,如果name不存在则插入,如果name存在则更新B中的记录

热点排行