# Datenbanken mit TOAD verändern



## hoeft (23. September 2004)

Hallo!

Ich arbeite mit Oracle 9 und Toad 8.0 Professional. Ich habe jetzt unteschiedliche sehr ähnliche existente Datenbanken und möchte deren Schemas alle in ein anderes Shema ändern (ein Referenzschema). Dafür müssten in einigen Tabellen in einigen Datenbanken Felder gelöscht oder hinzugefügt werden etc. . Mti TOAD kann man sich ja mit dem DB-Modul die Unterschiede zwischen den Tabellen anzeigen lassen. Außerdem generiert er ein Skript um die Datenstruktur anzupassen.

Meine Frage hierbei:
Gibt es eine Funktion in TOAD, die nicht nur die Datenstruktur anpasst, sondern auch gleich ein Skipt schreibt um die Daten zu importieren? Wenn beim löschen von Feldern dabei Daten wegfallen macht das nichts, da sie sowieso nicht verwendet werden. Hierbei handelt es sich ujm "Altlasten".

Für Hilfe wäre ich dankbar,
Höft


----------



## vop (23. September 2004)

Hi ich habe zwar einen älteren TOAD im Einsatz, aber ich denke die 8. Version sollte das auch können.

Es gibt im Menü Export. Damit kannst Du mehrere Tabelle exportieren (nach Auswahl)
Dabei erzeugt der TOAD entsprechende INSERT-Scripte, die du dann problemlos im anderen Schema wieder importieren kannst.

Tipp:
Schalte evtl. vorhande Indexe für den Import auf disabled, dann sparst du eine Menge Zeit.

vop


----------



## hoeft (23. September 2004)

Danke schonmal für die Antwort!

Das Problem ist, dass die Struktur der Tabellen voneinander abweicht, deswegen geht das so nicht.

Beispiel:
Die Tabelle Tab ist in der Datenbank 1 hat folgende Spalten: A,B,C
Die Tabelle Tab ist in der Datenbank 2 hat folgende Spalten: A,B

Vergleiche ich jetzt die beiden Schema's erstellt mit TOAD ein Skript, mir dem ich aus die Tabellen aus der Db2 in die Tabellen der Db1 umändern kann. Ich möchte jetzt allerdings auch die Daten die in der Tabelle Tab der Datenbank 1 standen in die neue Tabelle übernehmen, in denen es  die Spalten A,B,C gibt. 
Soweit ich weiß, geht es unter Oracle nicht, dass man einfach Spalten hinzufügt bzw. löscht, wenn schon Daten in der Tabelle drinnstehen.

Dieses selber mit SQL-Statements zu machen ist ja keine Problem. das Problem ist nur, dass ich relativ viele solcher Tabellen ändern muss und wenn TOAD die SQL-Statements auch erstelle kann, würde dass schon viel sparen.

Nochmal danke,
Höft


----------



## vop (23. September 2004)

Mit dem Befehl
Alter Table add column 
(oder so ähnlich)
kannst Du nachträglich Spalten zu Oracle-Tabellen hinzufügen, bevor Du die Insert-Scripte laufen läßt.

Schreib Dir doch zunächst ein Script, welches alle fehlenden Spalten in die entsprechenden Tabellen einfügt.

vop


----------



## mschuetzda (24. September 2004)

und mit:
Mit dem Befehl
Alter Table drop column 
(oder so ähnlich)

kann man ab Oracle8 auch Spalten löschen.

Es gibt Situationen wo das "Ändern" einer Spalte nicht möglich ist, solange diese daten enthält.

PS: Günstige Bücher zum Thema, ältere Auflagen oder Mängelexemplare, gibt es bei http://www.terrashop.de


----------

