Neue Tabelle mit alten Inhalten laden
- Dieses Thema hat 1 Antwort und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 17 Jahre, 1 Monat von
Anonym.
-
AuthorPosts
-
14. August 2006 um 17:16 Uhr #2716
AnonymGastHallo zusammen,
da ich nicht genau weiß, in welchem Bereich ich am besten eine Antwort erhalte, probiere ich es als erstes an dieser Stelle.
Da unsere DB-Admin sich neu im Umfeld der Unix befinden, versuche ich selber eine Antwort auf meine Frage zu kriegen.
Eine Tabelle wurde für mich mit zusätzlichen Attributen angelegt. Diese Attribute befinden sich leider nicht am Ende, sondern sind mitten drin eingefügt wurden. (Läßt sich auch nicht verändern) Zusätzlich sind die neuen Tabellen zum größten Teil Pflichtfelder (Not Null, default´s werden mitgeliefert für die Altdaten)
Es ist gefordert, dass die Altdaten aus der damligen Tabelle übernommen werden (die damligen Attribute sind auch noch vorhanden, allerdings nicht mehr an ihrer vorherigen Position). Deshalb ist ein 1:1 unload/load nicht möglich und die DB-Admins sind sich nicht sicher wie sie die Daten in die neue Struktur migriert kriegen.
Kann mir jemand sagen, ob es hierfür eine einfache und am besten schnelle Lösung gibt. Ich kann mir fast nicht vorstellen, dass sich dies in der Tat so kompliziert sein soll.
Gruß und Danke
Nathalie
17. August 2006 um 6:52 Uhr #3112
AnonymInaktivHallo Nathalie,
weder für DB2 for Linux/Unix/Windows noch für DB2 for z/OS gibt es Funktionen oder Kommandos, die die Implementierung einer Strukturänderung vollständig unterstützen. Aber natürlich gibt es Mittel und Wege:
- zur Vorsicht ein 1:1 Abzug der Tabelle in der alten Struktur zur eventuellen Rekonstruktion
- SELECT Statement formulieren
erzeuge den Output in erforderlicher Form, neue Felder z.B. mit
(CAST 1 AS INTEGER) AS NEWCOL1, (CAST NULL AS CHAR(1)) AS NEWCOL2, … - Verwende ein Programm, dass Daten im internen Format ausgeben kann,
unter z/OS ist dies z.B. DSNTIAUL
unter L/U/W ist dies der EXPORT Command - DROP alte Table
- CREATE neue Table
- Laden der umstrukturierten Daten mit dem LOAD Utility
Es gibt auch noch andere Möglichkeiten, wie z.B. ein
- [tt]INSERT INTO NEWTABLE
SE LECT … wie oben … FROM OLDTABLE[/tt] - dann ein RENAME TABLE.
Aber Vorsicht: Wg. der Beziehung zu abhängigen Objekten (Views, Primary Key, Indexes) vorsichtig einsetzen. Meist nur für die schnelle Ad-hoc Aktion (z.B. in einer Entwicklungsumgebung) geeignet.
Viel Erfolg
Gernot
-
AuthorPosts
You must be logged in to reply to this topic.