Extrahiere Metadaten

<< Suche in Metadaten | IBExpert | Drucke Metadaten >>

Die deutschsprachige Dokumentation wird seit dem 26. Juli 2016 nicht mehr gepflegt. Aktuelle und vollständige Dokumentation finden Sie auf der englischsprachigen Webseite: IBExpert Documentation


Extrahiere Metadaten

Das Extrahiere Metadaten Menü befindet sich im IBExpert Menü Nützliches oder kann durch Anklicken des entsprechenden Symbols im der Tools Symbolleiste geöffnet werden. Dieses Feature ist leider nicht in der kostenlose IBExpert Personal Edition enthalten.

Das Extrahiere Metadaten Modul wird verwendet, um einen Metadaten-Skript inklusiver Tabellen-Daten, Privilegien und Objektbeschreibungen für einen Teil einer Datenbank oder eine ganze Datenbank zu erzeugen. Es ermöglicht den Benutzer, Metadaten in eine Datei oder in die Zwischenablage zu extrahieren. Es ist sogar möglich Blob- und Array-Daten (als Blobdaten in einer LOB Datei) zu extrahieren.

Tabellendaten können in separate Dateien extrahiert werden (TABELLE_1.sql, TABELLE_2.sql, TABELLE_3.sql usw.) - die maximale Dateigröße kann auf der Optionen-Seite spezifiziert werden. So bald diese Dateigröße erreicht ist, generiert IBExpert automatisch eine neue Datei - besonders nützlich, wenn mit sehr großen Skripten gearbeitet wird, da Probleme häufig bei der Ausführung von Skripten über 2 GB auftauchen.

Unterstützung wird auch für sekundäre Datenbankdateiinformation angeboten; die entsprechenden ALTER DATABASE Anweisungen werden in den Ergebnisskript als Kommentare eingefügt.

Die Extraktion von benutzerdefinierten Sortierfolgen wurde in IBExpert Version 2015.03.14 implementiert. Derzeit gibt es keine Möglichkeit, die Sortierfolgen, die in einem Skript extrahiert werden, auszuwählen; alle benutzerdefinierten Sortierfolgen werden verarbeitet, sofern sie vorhanden sind.

Firebird 3.0 Support:

  • Seit IBExpert Version 2014.01.01:
  • Seit IBExpert Version 2014.06.17:
  • Seit IBExpert Version 2014.12.17:
    • Extraktion der Definition von Autoinkrement-Feldern.
    • Extrahieren der Beschreibungen von Package Prozeduren/Funktionen und deren Parameter.
  • Seit IBExpert Version 2015.03.14:
    • Extraktion von DDL-Privilegien.
  • Seit IBExpert Version 2015.12.21:
    • Unterstützung externer Prozeduren/Funktionen/Trigger

Um Ihre Metadatenextraktion vorzubereiten, wählen Sie zuerst eine Datenbank von der Toolbar-Auflistung aller registrierten Datenbanken. Folgende Optionen werden in der Extract to Symbolleiste angeboten:

  • Datei
  • Zwischenablage
  • Skriptausführung (default)
  • VCS Files (VCS-Dateien)
  • Separate Files (Getrennte Dateien)

Im Separate Files Modus werden Metadaten (und auch Daten, wenn angegeben) in mehrere Dateien extrahiert: zwei Dateien mit Metadaten (_ibe$start_.sql und _ibe$finish_.sql), Dateien mit den Tabellendaten (eine oder mehrere Dateien für jede Datenbanktabelle) und eine runme.sql Datei, welche die INPUT <file_name>-Anweisungen in der richtigen Reihenfolge enthält.

Wenn Datei, VCS Files oder Separate Files selektiert wird, muss natürlich einen Dateipfad und -namen (*.sql oder Metadata Extract Configuration *.mec) spezifiziert werden.

zurück zum Seitenanfang

Metadaten in IBExpert extrahieren

Metaobjekte

Die erste Seite, Metaobjekte, zeigt den verfügbare Objekte. Diese Datebank Baumstruktur kann in folgende Editoren gefunden werden:

Die Verfügbare Objekte bietet die Möglichkeit alle Datenbankobjekte zu selektieren (Checkboxoption Extrahiere alles), einzelne Objekte manuell (durch Verwendung der < oder > Buttons, durch Drag 'n' Drop der Objekte von einer Seite zur anderen oder durch einen Doppelklick auf den Objektnamen) auszusuchen, oder Objektgruppen (durch Verwendung der << oder >> Buttons, durch Drag 'n' Drop oder Doppelklick auf den Objektgruppenüberschriften) zu spezifizieren.

Mehrere Objekte können mit den [Strg] oder [Umschalt] Tasten gewählt werden. Es gibt sogar die Option, betroffene Objekte hinzufügen durch einfaches Klicken auf dem Button über das Selektierte Objekte-Fenster.

Sie können auch Objekte von den Objektabhängigkeiten (in den Objekteditoren auf der Abhängigkeiten-Seite zu finden) und den Feldabhängigkeiten-Liste (im Feldabhängigkeiten Fenster in den Tabellen- und Vieweditoren unten auf der Felder-Seite zu finden) in die Selektierte Objekte-Liste ziehen.

zurück zum Seitenanfang

Datentabellen

Die Datentabellen-Seite kann verwendet werden, um zu spezifizieren ob auch Daten extrahiert werden sollen. Hier kann man sowohl benutzerdefinierte als auch Systemtabellen - entweder einzeln oder alle - aussuchen:

wieder durch Verwendung der <, >>, > oder >> Buttons, Drag 'n' Drop oder Doppelklick.

Wenn eine der Ausgewählte Tabellen auf der rechten Seite selektiert ist, kann eine WHERE-Klausel hinzugefügt werden.

zurück zum Seitenanfang

Extrahiere Metadaten Optionen

Die Extrahiere Metadaten Optionen-Seite bietet eine große Auswahl an weitere Optionen:

Hauptoptionen

  • Erzeuge 'CREATE DATABASE' Statement: bestimmt ob eine CREATE DATABASE Anweisung am Anfang des generierten Skripts eingefügt werden soll. Wenn diese Option nicht gecheckt wird, fügt IBExpert stattdessen die CONNECT-Anweisung ein.
  • Generiere 'CONNECT' Anweisung: Spezifiert die CONNECT Anweisung.
  • Füge Passwort in 'CONNECT' and 'CREATE DATABASE' Statements ein: hier kann man bestimmen, ob das Passwort in den CREATE DATABASE oder die CONNECT Anweisungen in den SQL Skript eingefügt werden soll.
  • Dateigröße begrenzen auf: Diese Option legt die maximale Dateigröße der Ergebnissskript(e) fest. Wenn Sie diese Option nutzen und die maximale Dateigröße erreicht wird, erzeugt IBExpert automatisch die nächste Datei mit den Suffixen 0001, 0002 usw. Sie dürfen auch nicht vergessen beim Nutzen dieser Option die Separate files-Option in der Extrahiere nach Auflistung oben rechts anzugeben.


Metadatenoptionen

  • Setze Generatoren: wenn diese Option markiert ist, wird die SET GENERATOR-Anweisung für jede Generator in den Skript eingefügt werden.
  • Füge Objektbeschreibungen hinzu: hier wird spezifiziert, ob Datenbankobjektbeschreibungen in den Skript eingefügt werden soll. Für weitere Information siehe Wie extrahiert IBExpert Objektbeschreibungen?.
  • Extrahiere COMPUTED BY Felder getrennt: diese Option kann genutzt werden um zu bestimmen, ob berechnete Felder separate extrahiert werden sollen (sinnvoll, wenn Bugs in der Datenbank vorhanden sind; tatsächlich wird diese Option allerdings selten genutzt).
  • CHARACTER SET immer für Domänen/Felder/Parameter.
  • Domänen/Felder/Parameter immer sortieren (COLLATE).
  • Ohne IBExpert (IBE$*) Objekte: Checkoption.
  • Exclude TMP$* objects (InterBase 7.x): Checkoption.
  • Decodiere Domäne: wenn diese Option angegeben wird, werden die Domänentypen als Kommentare hinter den Domänennamen eingefügt. Zum Beispiel:
    CREATE TABLE Z (
       B BOOL /* INTEGER DEFAULT 0 CHECK (VALUE IN(0,1)) */
);
  • Use CREATE OR ALTER for procedures and triggers: konform mit Firebird 2.x.
  • Do not use SET TERM command: SET TERM ist nicht notwendig für mit IBExpert/IBEScript ausgeführte Skripte, könnte jedoch eventuell notwendig sein, wenn mit anderen Tools gearbeitet wird.
  • Use SEQUENCE instead of GENERATOR: konform mit Firebird 2.x.
  • Always quote identifiers:


Datenoptionen

  • Datumformat: hier kann das Datum-Format und Datetime-Format spezifiziert werden, mit Optionen einen ANSI-Präfix für Datum/Zeit Werte zu verwenden und das spezifizierte Format als Defaultwert.
  • Remove trailing spaces and control characters from string values
  • Extrahiere BLOBs: IBExpert kann Blobs nicht lesen; daher geht es über einen Umweg und referenziert einer separaten Datenbankdatei, die alle Blobs enthält. IBExpert ist, so weit wie wir wissen, das einzige Tool, die Blobs extrahieren kann. Andere Tools extrahieren bloß die Blobdefinition und nicht den Inhalt. Diese Option wird nur angeboten, wenn Sie Daten und/oder Metadaten in eine Datei exportieren. Diese Option bleibt unsichtbar, wenn Skriptausführung oder Zwischenablage ausgewählt wurden.
  • Benutze REINSERT statt wiederholter INSERTs: hier wird die IBExpert REINSERT Anweisung verwendet, um mehrfache Datensätze einzufügen.
  • UPDATE OR INSERT verwenden (bei Primärschlüssel, ohne MATCHING Klausel) in IBExpert Version 2015.03.14 hinzugefügt.
  • Extrahiere Werte der CHAR (n) CHARACTER SET OCTETS-Felder als Hex-Strings: wurde in IBExpert Version 2014.03.16 hinzugefügt.
  • Füge 'COMMIT WORK' hinter Datensätze hinzu: diese Option definiert die Anzahl der Datensätze bevor eine COMMIT Anweisung in den Skript eingefügt wird. Der Defaultwert ist 500, d.h. 500 INSERT Anweisungen werden ausgeführt und dann commitet.


Rechte

  • Extrahiere Rechte: Rechte für alle oder nur für ausgewählte Objekte extrahieren.
  • Extrahiere DDL-Privilegien (Firebird 3 und höher): in IBExpert Version 2015.03.14 implementiert.

Schließlich, wenn gewünscht, kann das Konfiguration speichern-Symbol oder die Tastenkombination [Strg + S] verwendet werden, um diese Konfiguration als eine Vorlage für zukünftige Extraktionen zu verwenden. Beim nächsten Mal kann die Vorlage schnell und einfach mit der Konfiguration laden-Symbol (oder [Strg + L]) geladen werden; die Vorlagenspezifikationen angepasst wenn notwendig und die Extraktion gestartet.

Nachdem Sie Ihre Objekte, Daten und Optionen spezifiziert haben, können Sie mit dem grünen Pfeilsymbol oder [F9] die Extraktion starten.

zurück zum Seitenanfang

Ausgabe

Die Ausgabe-Seite zeigt das IBExpert Protokoll während der Extraktion. Nach Vollendung, sollte einen Dateinamen bei der Konfiguration spezifiert worden sein, fragt IBExpert, ob diese Datei in den Skripteditor geladen werden soll.

Wurde die Skriptausführung als Ausgabe spezifiziert, wird die Skriptausführung automatisch geladen. Der Objektbaum auf der linken Seite kann geöffnet werden, und die einzelnen Anweisungen, auf einem Objekt bezogen, angezeigt werden. Wenn auf diesen Anweisungen in der Baumstruktur geklickt wird, springt IBExpert zum entsprechenden SQL Codeteil, der rechts angezeigt wird:

Die Anweisungen zeigen was IBExpert ausführt und in welcher Reihenfolge. Der Skript zeigt die Erzeugung aller Objekte und dann anschließend das Einfügen der Dateninhalt mit der ALTER-Anweisung.

Extrahiere Metadaten ist ein tolles Tool, das in verschiedenen Situationen verwendet werden kann. Zum Beispiel, kann es für einen inkrementelle Backup benutzt werden, sollte zum Beispiel nur eine Tabelle jeden Abend gesichert werden.

Unzählige Konfigurationen dürfen in einer Auswahl an Formaten gespeichert werden:

  • Metadata extract configuration (*.mec): diese ermöglicht eine schnelle und einfache Ladung bereits definierter Konfigurationen in das Extrahiere Metadaten-Fenster.
  • IBEBlock (*.ibeblock): Sie können die aktuellen Einstellungen als einen EXECUTE STATEMENT Anweisung speichern. IBExpert erzeugt einen gültigen IBEBlock mit der ibec_ExtractMetadata-Funktion, der später in Skripten verwendet werden kann.
  • All files (*.*).

zurück zum Seitenanfang

Extrahiere Metadaten IBEBlock

Spezifiziere den Pfad und den Dateinamen für die Extraktion und dann können Sie den Extract Metadata Block auf der IBEBlock-Seite individuell anpassen und speichern. Diese Funktion bietet eine schnelle und einfache Lösung für einige sonst lästige Aufgaben, wie die Generierung Fremdsprachenversionen Ihrer Datenbank, nachträgliche Änderung des Zeichensatzes, alternative Datensicherungen und Rücksicherungen oder inkrementelle Backups. Weitere Information erhalten Sie unter: ibec_ExtractMetadata

Wie extrahiert IBExpert Objektbeschreibungen?

IBExpert verwendet eine besondere Erweiterung der Skriptsprache, die es ermöglicht, Objektbeschreibungen in einen Skript zu extrahieren und dann in der Skriptausführung auszuführen.

zurück zum Seitenanfang

Wie extrahiert IBExpert Blobs?

IBExpert verwendet einen originellen Mechanismus um Blobfeld-Werte in einen Skript zu extrahieren. So können Sie eine ganze Datenbank (Metadaten und Daten) in Skriptdateien und diese Skripte in IBExpert ausführen. Folgendes Beispiel illustriert unsere Methode Blobwerte zu extrahieren.

Zum Beispiel, eine Datenbank hat eine Tabelle namens COMMENTS:

 CREATE TABLE COMMENTS (   COMMENT_ID INTEGER NOT NULL PRIMARY KEY,   COMMENT_TEXT BLOB SUBTYPE TEXT);

Diese Tabelle hat drei Datensätze:

COMMENT_IDCOMMENT_TEXT
1Erster Kommentar
2NULL
3Noch ein Kommentar

Wenn die BLOBs extrahieren Option nicht angegeben ist, erhalten Sie folgenden Skript:

 CREATE TABLE COMMENTS (   COMMENT_ID INTEGER NOT NULL PRIMARY KEY,   COMMENT_TEXT BLOB SUBTYPE TEXT); 

 INSERT INTO COMMENTS (COMMENT_ID) VALUES (1);
 INSERT INTO COMMENTS (COMMENT_ID) VALUES (2);
 INSERT INTO COMMENTS (COMMENT_ID) VALUES (3);

… und natürlich verlieren Sie auch Ihre Kommentare, wenn Sie Ihre Datenbank mit diesem Skript weiderherstellen.

Aber wenn die BLOBs extrahieren Option gecheckt ist, generiert IBExpert einen etwas anderen Skript:

 SET BLOBFILE 'C:\MY_SCRIPTS\RESULT.LOB'; 

 CREATE TABLE COMMENTS (
    COMMENT_ID INTEGER NOT NULL PRIMARY KEY,
    COMMENT_TEXT BLOB SUBTYPE TEXT);

 INSERT INTO COMMENTS (COMMENT_ID, COMMENT_TEXT) VALUES (1, h0000000_0000000D);
 INSERT INTO COMMENTS (COMMENT_ID, COMMENT_TEXT) VALUES (2, NULL);
 INSERT INTO COMMENTS (COMMENT_ID, COMMENT_TEXT) VALUES (3, h000000D_0000000F);

IBExpert generiert auch eine Sonderdatei mit der Erweiterung .LOB, die Blobwerte enthält. In unser Beispiel result.lob hat eine Länge von 28 Byte und ihr Inhalt wird Erster KommentarNoch ein Kommentar sein.

SET BLOBFILE ist eine besondere Erweiterung der Skriptsprache, welche die IBExpert Skriptausführung ermöglicht, Skripte auszuführen, die Referenzen zu Blobwerten enthalten.

zurück zum Seitenanfang

Aktuelle Generatorenwerte feststellen

Es gibt zwei die aktuelle Generatorenwerte in einer Datenbank zu ermitteln. Die erste verwendet den IBExpert Menüpunkt, Nützliches / Metadaten extrahieren, wo man auf der Optionen-Seite Generatoren setzen kann.

In Firebird kann das gleiche Ergebnis mit einer Prozedur erzielt werden:

 CREATE PROCEDURE GET_GENERATORS
 RETURNS (
     GENERATOR_NAME CHAR(31),
     CURR_VAL BIGINT)
 AS
 declare variable sql varchar(100);
 BEGIN
   FOR
     select r.rdb$generator_name generator_name, cast(0 as bigint) curr_val from rdb$generators r
     where r.rdb$generator_name not containing '$'
     INTO :GENERATOR_NAME,
          :CURR_VAL
   DO
   BEGIN
     sql='Select gen_id('||GENERATOR_NAME||',0) from rdb$database';
     execute statement :sql into :curr_val;
     SUSPEND;
   END
 END

zurück zum Seitenanfang

Datenbankreparatur mit Metadaten extrahieren

Mit Firebird ist es wichtig Metadatenskripte zu analysieren, vor allem wenn es Probleme mit der Datenbank gibt.

Wenn Ihre Datensicherungen regelmäßig bei der selben Tabelle wegen irreparabelen Datenschäden fehlschlagen, und Sie konnten das Problem mit http://ibexpert.net/ibe/index.php?n=Doc.FirebirdAndInterBaseCommandLineUtilitiesGFIX nicht lösen, ist hier eine alternative Methode zumindest alle heile Daten und die Datenbank selbst zu retten.

Versuchen Sie zuerst das Problem, mit einer SELECT Anweisung auf dem Tabellen ID-Feld, auf so wenig Datensätze wie möglich einzuschränken.

  1. Dann gehen Sie zu Extrahiere Metadaten, verbinden Sie mit Ihrer Datenbank und selektieren Sie alle Tabellen für Metadaten und Daten.
  2. Extrahiere nach - wählen Sie Separate files von der Liste.
  3. Extrahieren Sie alle Datenbankobjekte und Daten aus allen Tabellen.
  4. Erscheint eine Fehlermeldung auf spezifischen Daten, fügen Sie eine WHERE Bedingung auf der entsprechenden Tabelle. Zum Beispiel, klicken Sie auf den Tabellennamen auf der rechten Seite (Selektierte Objekte), und fügen Sie Ihre WHERE-Anweisung ein, um die beschädigte Daten auszuschliessen, z.B. WHERE ID>1000 AND ID<1100.
  5. Generieren Sie Ihren Skript (grünes Pfeil-Symbol oder [F9]).
  6. Löschen Sie die ursprüngliche Datenbankdatei.
  7. Wenn notwendig, fügen Sie die fehlenden Daten so weit wie möglich aus einer älteren Extraktionsdatei oder von einer Datenbanksicherung ein.
  8. Führen Sie runme.all.bat aus (vergessen Sie nicht den Pfad zu IBEScript.exe hinzuzufügen). Diese startet dann IBExperts IBEScript, runme.all.sql, die die Dateien von IBE$Start lädt, gefolgt von den Datendateien und schließlich IBE$Finish.

So wird eine neue Datenbank mit allen Objekten und Daten (sogar Blobdaten) erzeugt.

IBE$Start führt Operationen wie Datenbank- und Metadatenerzeugung aus. Tabellen werden ohne Primärschlüssel, Fremdschlüssel, Constraints, Trigger, usw. generiert. Dies wird von einer Serie von Insertbefehlen mit der IBEBlock Funktion, REINSERT gefolgt. Schließlich fügt IBE$Finish alle Primärschlüssel, Fremdschlüssel usw. ein.

Sie können das Ganze natürlich auch auf Skriptebene mit ibec_ExtractMetadata ausführen.

Diese Methode kann auch verwendet werden, wenn Sie Änderungen an Ihre Datenbank vornehmen wollen, zum Beispiel ein Update von SQL Dialekt 1 nach 3, oder nachträglich einen Standardzeichensatz definieren, wenn bei der Datenbankerzeugung kein Standardzeichensatz angegeben wurde. Um den Standardzeichensatz als Beispiel von NONE auf ISO8859_1 zu ändern, öffnen Sie IBE$Start, suchen Sie nach CHARACTER SET NONE und ersetzen Sie diese mit CHARACTER SET ISO8859_1, dann führen Sie runme.all.sql, wie oben beschrieben, aus.

Siehe auch:
deutschsprachig:
IBEScript
englischsprachig:
ibec_ExtractMetadata
Using Extract metadata to repair databases
Automated database updates
Import & export using IBExpert

zurück zum Seitenanfang
<< Suche in Metadaten | IBExpert | Drucke Metadaten >>