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.
Metadaten in IBExpert extrahieren
Metaobjekte
Die erste Seite, Metaobjekte, zeigt den verfügbare Objekte. Diese Datebank Baumstruktur kann in folgende Editoren gefunden werden:
- Extrahiere Metadaten auf der ersten Seite, Metaobjekte,
- Generiere HTML Dokumentation, auf der Objekte-Seite,
- Drucke Metadaten.
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.
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.
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 dieCONNECT
-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 dieCONNECT
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?.
- Verwende UPDATE statt DESCRIBE: wenn diese Option spezifiziert ist, generiert IBExpert eine
UPDATE RDB$xxx SET RDB$DESCRPTION ...
Anweisung stattDESCRIBE
während der Metadatenextrakt. Sie müssen vorher die Option, Use UPDATE instead of DESCRIBE when extracting object descriptions, im IBExpert Datenbankmenü, Datenbank registrieren oder Datenbank Registrierungsinfo unter Zusatzeinstellungen / Extract Metadata. Der Defaultwert entspricht den Wert in der Datenbankregistrierungsinfo. - Use COMMENT statement (Firebird 2): diese Option zwingt die Extraktion von Objektbeschreibungen als eine Sammlung von
COMMENT
Anweisungen. Weitere Information entnehmen Sie bitte dem Firebird 2.0.4 Release Notes Kapitel,COMMENT
statement implemented.
- Verwende UPDATE statt DESCRIBE: wenn diese Option spezifiziert ist, generiert IBExpert eine
- 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 ist500
, d.h. 500INSERT
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.
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 deribec_ExtractMetadata
-Funktion, der später in Skripten verwendet werden kann. - All files (*.*).
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.
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_ID | COMMENT_TEXT |
---|---|
1 | Erster Kommentar |
2 | NULL |
3 | Noch 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.
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
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 https://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.
- Dann gehen Sie zu Extrahiere Metadaten, verbinden Sie mit Ihrer Datenbank und selektieren Sie alle Tabellen für Metadaten und Daten.
- Extrahiere nach - wählen Sie Separate files von der Liste.
- Extrahieren Sie alle Datenbankobjekte und Daten aus allen Tabellen.
- 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 IhreWHERE
-Anweisung ein, um die beschädigte Daten auszuschliessen, z.B.WHERE ID>1000 AND ID<1100
. - Generieren Sie Ihren Skript (grünes Pfeil-Symbol oder [F9]).
- Löschen Sie die ursprüngliche Datenbankdatei.
- Wenn notwendig, fügen Sie die fehlenden Daten so weit wie möglich aus einer älteren Extraktionsdatei oder von einer Datenbanksicherung ein.
- Führen Sie
runme.all.bat
aus (vergessen Sie nicht den Pfad zuIBEScript.exe
hinzuzufügen). Diese startet dann IBExpertsIBEScript
,runme.all.sql
, die die Dateien vonIBE$Start
lädt, gefolgt von den Datendateien und schließlichIBE$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 >>