将一个表插入另一个具有不同字段的表中

伊卡罗

我试图将其中一个表的值复制到oracle中的另一个表。

可以说表原始表和临时表,因此我通常会使用以下SQL波纹管:

Insert into Original Select * from Temp where site = 1

问题是,现在我的原始表已经具有站点1,因此我需要将站点1的内容复制到将站点2更改为站点1的原始表中。我通常会这样做

Insert into Original (site, field1, field2, field3) Select '2', field1, field2, field3 from Temp where site = 1

但是,我很少有数百个表格可以做到这一点,而且我正在寻找一种无需在每个语句中输入字段名称的解决方案。

有任何想法吗?

思考长臂猿

我编写了简单的PLSQL过程,代码如下。它会生成插入字符串以输出,如果适合您,您可以复制/粘贴它们并手动运行,也可以取消注释末尾的行,并且插入将自动完成。经过样本数据测试,效果很好。

该过程对中的列进行操作user_tab_columns首先,您必须定义声明部分中感兴趣的表的列表。您可能需要根据需要更改一些代码。

产生的输出:

insert into original (site, F1, F2, F3) select 1, F1, F2, F3 
  from TEMP1 where site = 1
insert into original (site, F2, F1, F3) select 2, F2, F1, F3 
  from TEMP2 where site = 1
insert into original (site, F3, F2, F1) select 3, F3, F2, F1 
  from TEMP3 where site = 1

程序代码:

create or replace procedure justdoit is
  type t_var is table of varchar2(30);
  -- table names in uppercase
  tabs t_var := t_var('TEMP1', 'TEMP2', 'TEMP3'); 
  v_sql1 varchar2(4000);
  v_sql2 varchar2(4000);
begin

for i in 1..tabs.count
loop
  v_sql1 := 'insert into original (site, ';
  v_sql2 :=  'select '||i||', ';
  for o in (
    select * from user_tab_columns 
      where table_name = tabs(i)
      order by column_id)
  loop
    if o.column_name <> 'SITE' then
      v_sql1 := v_sql1 || o.column_name||', ';
      v_sql2 := v_sql2 || o.column_name||', ';
    end if;
  end loop;
  v_sql1 := rtrim(v_sql1, ', ')||') '||rtrim(v_sql2, ', ');
  v_sql1 := v_sql1||' from '||tabs(i)||' where site = 1';
  dbms_output.put_line(v_sql1);
  -- execute immediate v_sql1;  -- <- uncomment this line
end loop;

end justdoit;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将一个表插入另一个具有不同字段的表中

来自分类Dev

SQL Server:查询以将数据从具有不同结构的另一个表插入表中

来自分类Dev

将数据库中一个表中的特定行插入到另一个具有不同列的表中

来自分类Dev

如何使用SQL将具有不同选择条件的多列插入到另一个表中

来自分类Dev

将一个表中的不同值插入到另一个表中

来自分类Dev

将具有标准值的另一个表的列中的所有记录插入到表中

来自分类Dev

将一个表复制到另一个具有不同结构的表

来自分类Dev

Matlab从另一个具有不同维度的表向表中添加行

来自分类Dev

将插入的ID插入另一个表

来自分类Dev

将插入的ID插入另一个表

来自分类Dev

将OUTPUT Insert.id插入到另一个具有多个值的表中

来自分类Dev

具有Microsoft Access中另一个表的值的计算字段

来自分类Dev

具有Microsoft Access中另一个表的值的计算字段

来自分类Dev

将表值从一个表插入到另一个表

来自分类Dev

如何使用各自的字段将值从一个表插入到另一个表

来自分类Dev

将两个表中的数据插入到另一个表中

来自分类Dev

将一个数据库表中的行插入另一个数据库中的两个不同表中

来自分类Dev

mysql将2个表插入另一个表中,使用JOIN

来自分类Dev

如何将一个表中另一个表具有多个ID的两个表联接在一起?

来自分类Dev

将临时列插入另一个表

来自分类Dev

如何将值从另一个表插入一个表

来自分类Dev

将一个表数据插入另一个表

来自分类Dev

将一个表中的值插入到 SQL Server 中的另一个表中

来自分类Dev

是否可以将一个表中的所有字段与另一个表匹配到第三个表?

来自分类Dev

如何将一个表中从 XML 中提取的字段插入到另一个表中?

来自分类Dev

将一个表中的行插入到另一个表中,但仅插入没有重复的行

来自分类Dev

使用MariaDB循环将一个表中的行与另一个表中的值插入

来自分类Dev

使用另一个表中的键将记录插入一个表中

来自分类Dev

根据来自表单的用户输入,将一个表中的主键插入另一个表中

Related 相关文章

  1. 1

    将一个表插入另一个具有不同字段的表中

  2. 2

    SQL Server:查询以将数据从具有不同结构的另一个表插入表中

  3. 3

    将数据库中一个表中的特定行插入到另一个具有不同列的表中

  4. 4

    如何使用SQL将具有不同选择条件的多列插入到另一个表中

  5. 5

    将一个表中的不同值插入到另一个表中

  6. 6

    将具有标准值的另一个表的列中的所有记录插入到表中

  7. 7

    将一个表复制到另一个具有不同结构的表

  8. 8

    Matlab从另一个具有不同维度的表向表中添加行

  9. 9

    将插入的ID插入另一个表

  10. 10

    将插入的ID插入另一个表

  11. 11

    将OUTPUT Insert.id插入到另一个具有多个值的表中

  12. 12

    具有Microsoft Access中另一个表的值的计算字段

  13. 13

    具有Microsoft Access中另一个表的值的计算字段

  14. 14

    将表值从一个表插入到另一个表

  15. 15

    如何使用各自的字段将值从一个表插入到另一个表

  16. 16

    将两个表中的数据插入到另一个表中

  17. 17

    将一个数据库表中的行插入另一个数据库中的两个不同表中

  18. 18

    mysql将2个表插入另一个表中,使用JOIN

  19. 19

    如何将一个表中另一个表具有多个ID的两个表联接在一起?

  20. 20

    将临时列插入另一个表

  21. 21

    如何将值从另一个表插入一个表

  22. 22

    将一个表数据插入另一个表

  23. 23

    将一个表中的值插入到 SQL Server 中的另一个表中

  24. 24

    是否可以将一个表中的所有字段与另一个表匹配到第三个表?

  25. 25

    如何将一个表中从 XML 中提取的字段插入到另一个表中?

  26. 26

    将一个表中的行插入到另一个表中,但仅插入没有重复的行

  27. 27

    使用MariaDB循环将一个表中的行与另一个表中的值插入

  28. 28

    使用另一个表中的键将记录插入一个表中

  29. 29

    根据来自表单的用户输入,将一个表中的主键插入另一个表中

热门标签

归档