Hallo Zusammen,
die Frage vorab: ist es möglich alle Indexe zu deaktivieren um Daten zu importieren und danach die Indexe wieder zu aktivieren?
Ich bin gerade dabei eine Datenbank
FB 1.5 Dialect1 auf Dialect3 umzubauen.
Ich gehe so vor:
-Zuerst ein Backup-/Restore der Datenbank durchgeführt um sicher zu sein dass sie in Ordnung ist.
-Eine neue Datenbank angelegt mit Dialect3
-Metadaten über IBExpert in ein File schreiben.
-Im File alle Felder von Typ Date in Timestamp umbauen. In Dialect1 konnte ein Date Datum und Uhrzeit enthalten,
in Dialect3 gibt es ein Date, Time und Timestamp.
-Alle Daten über IBExpert incl Blobs in ein Textfile exportieren.
-Alle Indexe deaktivieren
-Das Textfile importieren.
-Alle Indexe wieder aktivieren
Wenn keine Fehler vorkommen sollte es gewesen sein.
Der Hintergrund warum ich die Indexe deaktivieren muss ist, ich verwende zirkulare Refrenzen in manchen Tabellen.
Es gibt also Tabellen die haben ein FK auf ein PK der gleichen Tabelle. Deshalb müssen die Indexe deaktiviert sein
da es vorkommen kann dass ein FK auf ein Datensatz referenziert welcher erst später importiert wird.
http://www.firebirdfaq.org/faq274/
Hier ist beschrieben wie alle Indexe als Script abgerufen werden können um sie danach zu aktivieren,
doch das deaktivieren funktioniert so nicht. z.B.
Code:
ALTER INDEX FK_ABR_POS_1 INACTIVE
In IBExpert habe ich auch keine Möglichkeit gesehen alle Indexe zu deaktivieren-/aktivieren
Hat jemand eine Idee?
[Edit]
Ich habe jetzt doch noch eine Möglichkeit gefunden. Nicht die Indexe deaktivieren sondern alle FKs löschen
somit werden auch die Indexe gelöscht.
Über dieses Statement bekommt man ein Script um alle FKs zu entfernen.
http://www.firebirdfaq.org/faq176/
Nach dem Datenimport könnte man über IBExpert eine Strukturvergleich durchführen und die FKs wieder herstellen lassen.
Gruß Kostas