Oracle将数据复制到另一个表

use*_*234 23 sql oracle

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

什么是正确的语法?

谢谢

select CODE, MESSAGE into EXCEPTION_CODES (CODE, MESSAGE)
from Exception_code_tmp
Run Code Online (Sandbox Code Playgroud)

错误是

**SQL Error: ORA-00905: missing keyword
00905. 00000 -  "missing keyword"**
Run Code Online (Sandbox Code Playgroud)

Jus*_*ave 54

你需要一个 INSERT ... SELECT

INSERT INTO exception_codes( code, message )
  SELECT code, message
    FROM exception_code_tmp
Run Code Online (Sandbox Code Playgroud)


Tri*_*ath 37

如果要创建包含数据的表.首先创建表:

create table new_table as ( select * from old_table); 
Run Code Online (Sandbox Code Playgroud)

然后插入

insert into new_table ( select * from old_table);
Run Code Online (Sandbox Code Playgroud)

如果要创建没有数据的表.您可以使用 :

create table new_table as ( select * from old_table where 1=0);
Run Code Online (Sandbox Code Playgroud)

  • 'insert into'是多余的,因为'create table as'将创建表并插入所有数据. (19认同)
  • 但是除了在这种情况下是多余的之外,我只是在这里徘徊,希望将数据从一个表插入到另一个表中,而这样做是。因此,“答案”实际上提供了更多的选项,而不仅仅是对这个问题的答案。 (2认同)

Ali*_*aka 9

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

create table T_NEW as
  select * from T;
Run Code Online (Sandbox Code Playgroud)

*这不会复制PK,FK,触发器等.

  • @NathanGoings - 听起来像是一个需要提出的问题:) (2认同)

jue*_*n d 5

insert into EXCEPTION_CODES (CODE, MESSAGE)
select CODE, MESSAGE from Exception_code_tmp
Run Code Online (Sandbox Code Playgroud)