# Tabellen kopieren



## SQL (21. Jan 2006)

Hi

wie kann ich einfach eine Tabelle aus einer bestehenden Datenbank direkt in eine neue Datenbank kopieren mit seinem sämtlichen Inhalt?

Schöne Grüße

SQL


----------



## Bleiglanz (21. Jan 2006)

die Hilfe zu Datenbank1 Lesen

die Hilfe zu Datenbank2 Lesen

=> was damit machen


wenn du meinst mit JDBC

SELECT * from tabelle1

im ResultSet while(rs.next())

für jede Zeile einen INSERT INTO tabelle2 // andere Connection!

als SQL-Batch

nach der schleife als Batch alle Inserts absetzen


P.S. Das ist suboptimal, viele DBs bieten die möglichkeiten, mit einem INSERT "mehrere" Zeilen auf einmal einzufügen...


----------



## SQL (21. Jan 2006)

Hi 
Vielen Dank werde das gleich mal ausprobieren.
Noch eine kurze Frage zu Views und Tabellen. Ich habe eine Datenbank bei der fast jede Tabelle auch als View vorkommt mit den gleiche Einträgen und Inhalten. Aus welchen sollte man dann lieber lesen?;

Schöne Grüße

SQL


----------



## SQL (21. Jan 2006)

Hi 

wollte gerade Deine Lösung umsetzten das Problem ist jetzt das ich Tabelle vorher ja noch Anlegen muss. Das will aber nicht. Ich will sie automatisch erstellen lassen geht das ?

Vielen Dank für Deine Antwort

Schöne Grüße

SQL


----------



## Bleiglanz (21. Jan 2006)

ist das die gleiche Datenbank-Engine? Also 2 * Oracle oder so

=> mit JDBC kannst du natürlich auch ein CREATE TABLE absetzen

aber dazu musst du ja die Tabellendefinition kennen

die kannst du dir über DatabaseMetaData abholen

aber so richtig toll ist das nicht...


----------



## SQL (21. Jan 2006)

HU

Nein es nicht die gleiche Engine. Das wäre ja zu schön. 
Hast Du ein Beispiel wie das mit den DatabaseMetaData geht.

Schöne Grüße 

SQL


----------



## Bleiglanz (21. Jan 2006)

nein, das haut nicht hin, kannst ja mal googeln

Problem:

In Datenbank1 ein Spaltentyp den es in Datenbank2 gar nicht gibt => was machste dann? 

die Logik von dem Programm:

A  lies alle Spalten über connection.getDatabaseMetadata().
 #getTables(null,null,null,null)  und #getColumns() aus

B bau daraus einen grossen langen String "CREATE TABLE"... für die zweite Datenbank

ist so aufwändig und grässlich, igittigiittigitt; 


es ginge natürlich schon, wenn beide ziemlich SQL-92 kompatibel sind und die Tabellen hinreichend einfach


----------



## Guest (21. Jan 2006)

HI

bevor ich mir jetzt richtig übel arbeit mache nochmal eine Frage, 
Wenn ich aus einer Tabelle bzw View lese mache ich es momentan immer so das ich mir eine Klasse schreibe die,di e Datenstruktur der Tabelle hält und eine mit der ich verschiedene Abfragen mache und Zeilen einfügen. oder geht das alles auch einfacher.

Schöne Grüße


----------



## Bleiglanz (22. Jan 2006)

wie du das in Klassen organisierst ist deine Sache

JDBC ist in wahrheit ziemlich einfach:

Zeichenketten an einen Datenbankserver übermitteln

Resultsets für Ergebnisse bereitstellen

+ ein paar Luxusfeatures


In gewisser Weise "einfacher" sind O/R Mapper wie Hibernate, Castor usw., aber dazu brauchst auch eine Einarbeitung


----------



## SQL (22. Jan 2006)

Hi 

Vielen Dank für Deine Post. Bin jetzt ein stück weiter gekommen. 

Schöne Grüße

SQL


----------



## Chris Baumann (2. Feb 2006)

warum nicht hibernate oder ähnliches benutzen. 1 mal schema defînition ablegen und in alle gängigen db's schreiben und wieder auslesen. Da gibts sogar einfach db zu db kopierfunktionen.


----------

