[ORACLE SQL] Nieuwe tabel aanmaken lukt niet*

Pagina: 1
Acties:
  • 252 views sinds 30-01-2008
  • Reageer

  • Wilfred
  • Registratie: Januari 2000
  • Laatst online: 22-08-2022
Ik probeer met een query een nieuwe tabel te creeren door middel van een insert into statement.
In Access werkt het prima en krijg ik een nieuwe tabel met alle records. In oracle krijg ik een foutmelding : .ORA-00936: Ontbrekende uitdrukking.

De sql is heel simpel :
select TB_tabel1.veld1,
INTO Nieuwe_tabel
from TB_tabel1;
Als ik de into nieuwe_tabel regel weghaal laat hij wel alle records zien.

Sign of my Time


  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

Je probeert een tabel te maken met een select?

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 18:12

Reinier

\o/

Volgens mij kan select into helemaal niet in Oracle... toch?

[ Voor 4% gewijzigd door Reinier op 08-08-2006 11:26 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 10:57

momania

iPhone 30! Bam!

je doet nu select <veld> en insert into <tabel>

veld -> tabel gaat niet ;)

je zal net als bij een normale insert wel moeten aangeven welke velden je gaat inserten

[edit]
en een tijdelijke tabel kan wel, maar als je echt een nieuwe tabel wilt maken, zal je volgens mij ook echt eerst een create table moeten doen ergens. op deze manier gaat dat in oracle niet werken

[ Voor 38% gewijzigd door momania op 08-08-2006 11:24 ]

Neem je whisky mee, is het te weinig... *zucht*


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:21

Creepy

Tactical Espionage Splatterer

Even de Oracle SQL documentatie lezen lijkt me ;)
code:
1
2
3
INSERT INTO zip_bak
SELECT *
FROM zip_code;

Let hierbij wel op dat de tabel waar de data in moet al wel dient te bestaan.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Wilfred
  • Registratie: Januari 2000
  • Laatst online: 22-08-2022
Ik selecteer toch veld1 uit de tabel om in de nieuwe tabel in te voegen?

Sign of my Time


Verwijderd

Probeer eens

SQL:
1
create table new_table_name as select * from old_Table_name;


P.S. Let er wel op dat alleen de DATA wordt overgenomen, geen indexen etc.

[ Voor 28% gewijzigd door Verwijderd op 08-08-2006 11:29 ]


  • Wilfred
  • Registratie: Januari 2000
  • Laatst online: 22-08-2022
Creepy schreef op dinsdag 08 augustus 2006 @ 11:26:
Even de Oracle SQL documentatie lezen lijkt me ;)
code:
1
2
3
INSERT INTO zip_bak
SELECT *
FROM zip_code;

Let hierbij wel op dat de tabel waar de data in moet al wel dient te bestaan.
Ja precies.. Ik wil dat er meteen een tabel gecreerd word. Maar dat is misschien wel de oplossing.. eerst de tabel aanmaken en dan inserten.

Ik had natuurlijk al wat van de documentatie gelezen dus ik denk dat het echt wel mogelijk is...

SELECT INTO -- Construct a new table from the results of a SELECT.

SELECT * INTO TEMP TABLE old_emp
FROM employees

Sign of my Time


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
In Sql Server kan een dergelijke constructie -zoals de TS probeert- ook, echter, het is aan de topicstarter om eerst eens uit te zoeken of een dergelijk statement wel aanvaardt wordt in Oracle.

Iig, er staat een komma teveel in de query van de topicstarter. (komma tussen veld1 en INTO )

https://fgheysels.github.io/


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je kunt CREATE TABLE as SELECT gebruiken volgens mij

De overige tips over INSERT INTO zijn niet correct, die gaan uit van een bestaande tabel, TS wil rijen in een nog niet bestaande tabel toevoegen. Met MSSQL kan dit inderdaad met SELECT * INTO NieuweTabel FROM OudeTabel

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Wilfred
  • Registratie: Januari 2000
  • Laatst online: 22-08-2022
Verwijderd schreef op dinsdag 08 augustus 2006 @ 11:28:
Probeer eens

SQL:
1
create table new_table_name as select * from old_Table_name;


P.S. Let er wel op dat alleen de DATA wordt overgenomen, geen indexen etc.
Dit werkt in ieder geval.
Ik wil eigelijk meteen een aantal later te vullen velden in de query opnemen..
Met select into lukte dat (in access) wel Ik zal nu met alter tabel de velden toevoegen.

Sign of my Time


  • ToolkiT
  • Registratie: Februari 2004
  • Niet online

ToolkiT

brit-tweaker

Persoonlijk zou ik het in 2 stappen doen;
Eerst een create table en dan een insert in die table met je select...

Zo hou je veel meer controle over hoe je table inelkaar steeks.. het is wel wat meer werk..

Mag je een gegeten paard in de bek kijken?


  • Wilfred
  • Registratie: Januari 2000
  • Laatst online: 22-08-2022
Dat is ook een goed idee. Het komt allemaal in een script te staan. dus zoveel extra werk is het niet ;)

Bedankt voor de hulp!

Sign of my Time


Verwijderd

Ik ben het met toolkit eens dat het beter is om eerst een lege tabel aan te maken, en dan te inserten, maar mocht je het via de create table versie willen doen, dan kun je je lege kolommen natuurlijk ook in 1 keer meenemen.

SQL:
1
2
3
4
5
Create new_table 
  as Select *, 
            cast('' as varchar(20)) as lege_tekst, 
            cast(0 as numeric(4,2)) as leeg_nummer 
     from old_table

de CAST's gebruik ik dus om het type van de nieuwe kolom af te dwingen

disclaimer : bovenstaande code is niet getest, en kan dus nog fouten bevatten.
Pagina: 1