我现在有两个oracle的库1期库和2期库,2期库在1期库的基础上每个表都添加了几个字段,现在我想把1期库的数据插入到2期库中,举个例子 1期库中有个表jjsldj,他有a1,a2,a3字段,2期库中的jjsldj有a1,a2,a3,b1字段,我写了一个语句
insert into jjsldj@2期(a1,a2,a3) selelct a1,a2,a3 from jjsldj 但由于表太多 我觉得这种方法效率太低,哪位大侠能给小弟指点一二,找个比较好的方法
insert into jjsldj@2期(a1,a2,a3) selelct a1,a2,a3 from jjsldj 但由于表太多 我觉得这种方法效率太低,哪位大侠能给小弟指点一二,找个比较好的方法
create or replace procedure gen_user_insert_tab_sql
is
v_sql varchar(32767);
cursor v_cur_columns(p_table_name in varchar2) is
select column_name
from user_tab_columns
where table_name = p_table_name;
begin
for x in (select table_name from user_tables)
loop
v_sql := 'INSERT INTO ' || x.table_name || '@2期(';
for col in v_cur_columns(x.table_name)
loop
v_sql := v_sql || col.column_name || ',';
end loop;
v_sql := substr(v_sql, 1, length(v_sql) - 1); --去掉最后一个逗号
v_sql := v_sql || ') SELECT ';
for col in v_cur_columns(x.table_name)
loop
v_sql := v_sql || col.column_name || ',';
end loop;
v_sql := substr(v_sql, 1, length(v_sql) - 1); --去掉最后一个逗号
v_sql := v_sql || ' FROM ' || x.table_name || ';';
dbms_output.put_line(v_sql);
end loop;
end;sql>set serveroutput on
sql>spool c:\insertsql.sql
sql>exec gen_user_insert_tab_sql
sql>spool off
--然后,在你的c:\的文件insertsql.sql,就有你要的sql语句了