2012-07-13 15 views
15

W Oracle, kopiuję dane z kopii zapasowej do nowej tabeli, to nie działa.Oracle skopiować dane do innej tabeli

jaka jest prawidłowa składnia?

Dzięki

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

błąd jest

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

Odpowiedz

31

Potrzebujesz INSERT ... SELECT

INSERT INTO exception_codes(code, message) 
    SELECT code, message 
    FROM exception_code_tmp 
4
insert into EXCEPTION_CODES (CODE, MESSAGE) 
select CODE, MESSAGE from Exception_code_tmp 
+1

dzięki. czy mamy "wybierz ... do" w Oracle? – user595234

+1

wydaje się być niezgodny z [tym wpisem] (http://stackoverflow.com/questions/2250196/select-into-using-oracle) –

22

Jeśli chcesz utworzyć tabelę z danymi. Najpierw utworzyć tabelę:

create table new_table as (select * from old_table); 

a następnie włóż

insert into new_table (select * from old_table); 

Jeśli chcesz utworzyć tabelę bez danych. można użyć:

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

"Wstawianie" jest zbędne, ponieważ "utwórz tabelę jako" spowoduje utworzenie tabela i wstaw wszystkie dane. – thoredge

7

Tworzenie tabeli i kopiowania danych w jednym poleceniem:

create table T_NEW as 
    select * from T; 

* Tutaj nie kopiowania PKS, FKS, wyzwalacze, itp

+0

Powoduje skopiowanie wiązań w tabeli, np. Nie jest pusta. Dzięki :) – Shiva

Powiązane problemy