【问题标题】:Oracle copy data to another tableOracle 将数据复制到另一个表
【发布时间】:2012-07-13 10:10:55
【问题描述】:

在 Oracle 中,我将数据从备份复制到新表,但它不起作用。

正确的语法是什么?

谢谢

select CODE, MESSAGE into EXCEPTION_CODES (CODE, MESSAGE)
from Exception_code_tmp

错误是

**SQL Error: ORA-00905: missing keyword
00905. 00000 -  "missing keyword"**

【问题讨论】:

    标签: sql oracle


    【解决方案1】:
    create table xyz_new as select * from xyz where 1=0;
    

    http://www.codeassists.com/questions/oracle/copy-table-data-to-new-table-in-oracle

    【讨论】:

      【解决方案2】:

      在单个命令中创建表并复制数据:

      create table T_NEW as
        select * from T;
      

      * 这将复制 PK、FK、触发器等。

      【讨论】:

      • 复制表上的约束,比如不为空。谢谢:)
      • 有没有办法复制PK和FK?
      • @NathanGoings - 听起来像是一个问题:)
      【解决方案3】:

      如果你想用数据创建表。首先创建表:

      create table new_table as ( select * from old_table); 
      

      然后插入

      insert into new_table ( select * from old_table);
      

      如果你想创建没有数据的表。您可以使用:

      create table new_table as ( select * from old_table where 1=0);
      

      【讨论】:

      • “insert into”是多余的,因为“create table as”将创建表并插入所有数据。
      • 但是除了在这种情况下是多余的之外,我只是在这里徘徊,希望将数据从一个表插入另一个表,这就是这样做的。所以答案实际上提供了更多的选择,而不仅仅是这个问题的答案。
      • 我来也是出于同样的原因。我最初使用 create table 作为 select 来填充记录。但是,源表有新记录,需要在目标表的现有记录之上添加。这在这种情况下会有所帮助。
      • @Clomez 答案确实提供了更多选项,但它的编写方式是错误的,因为正如@thoredge 所提到的,建议的“创建为”后跟“插入”的顺序是多余的。答案需要编辑。
      【解决方案4】:
      insert into EXCEPTION_CODES (CODE, MESSAGE)
      select CODE, MESSAGE from Exception_code_tmp
      

      【讨论】:

      【解决方案5】:

      您需要INSERT ... SELECT

      INSERT INTO exception_codes( code, message )
        SELECT code, message
          FROM exception_code_tmp
      

      【讨论】:

      • 太棒了..!!它简单易用。但是如果有更多的列可以说 - 25-30 列
      • @BN - 您只需列出所有列。如果您知道两个表具有完全相同的列集且顺序完全相同,则可以执行SELECT *。这通常不是我对生产代码的推荐,但对于一次性的临时代码来说是合理的。
      猜你喜欢
      • 2021-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多