![]() |
Datenbank: Firebird • Version: 2.0.6 • Zugriff über: egal
Firebird 2.0 Metadaten extrahieren
Hallo,
Ich extrahiere meine Datenbankstruktur aus Firebird mit isql -e datenbank.gdb Ich habe einige Felder des Typs Numeric(10,3) drin. Diese werden teilweise korrekt extrahiert, aber teilweise auch als Bigint ohne Nachkommastellen. (Grad nochmal ein wenig rumgespielt, passiert sogar innerhalb einer Tabelle). Ob das jetzt nur bei Numeric(10,3) passiert, oder auch bei anderen Kombinationen, müsste ich durchprüfen. Spätestens beim neu Erstellen der Datenbank kommt mein Delphiprogramm dann natürlich nicht mehr mit der Struktur klar. Kennt jemand dieses Problem und wie man es umgehen kann (aber möglichst mit dieser Firebird-Version, die 2.1 hatte ich kurz angetestet und hatte irgendwelche Kompatibilitätsprobleme, die ich noch vor mir her schiebe)? Gruß Rainer |
AW: Firebird 2.0 Metadaten extrahieren
Hallo,
alternativ kannst du dir die Metadaten z.B via FlameRobin holen oder hiermit direkt mit Delphi:
Delphi-Quellcode:
uses ... IBExtract ...
Delphi-Quellcode:
Aufruf dann in etwa so:
procedure ExtractMetaData(Database : TIBDatabase;Transaction : TIBTransaction;List : TStringList);
begin with TIBExtract.Create(nil) do begin try Database := Database; Transaction := TransAction; ExtractObject(eoDatabase); List.AddStrings(Items); finally free; end; end; end;
Delphi-Quellcode:
Beide Möglichkeiten verursachen bei mir keine Fehler bei den Datentypen (Firebird 1.5/2.1/2.5).
procedure TfMain.Button1Click(Sender: TObject);
var sl : TStringlist; begin sl := TStringlist.create; try ExtractMetaData(dm.ibdb,dm.ibtrans,sl); showmessage(sl.text); finally sl.free; end; end; |
AW: Firebird 2.0 Metadaten extrahieren
Hat nichts mit dem Thema zu tun, aber wieso ist List ein Var-Parameter? Die Referenz soll ja wohl nicht änderbar sein.
|
AW: Firebird 2.0 Metadaten extrahieren
Danke, das "var" war natürlich zu viel
|
AW: Firebird 2.0 Metadaten extrahieren
Der Delphi-Quellcode macht leider fast genau den selben Mist, mit dem unwesentlichen Unterschied, dass statt bigint int64 als Datentyp erscheint.
Flamerobin extrahiert die Struktur korrekt, nützt aber leider nix, da ich das ganze in einem Script verwenden und daher über die Kommandozeile aufrufen will Gruß Rainer |
AW: Firebird 2.0 Metadaten extrahieren
Int64 und Bigint ist übrigens das Selbe (Int64 ist ein Alias)
|
AW: Firebird 2.0 Metadaten extrahieren
Zitat:
erfordert zwar var oder distri lizenz, spart aber viel arbeit (und kann die gesamte restliche ibeblock sprache auch noch). Der script Befehl ibec_extractmetadata kann ggf noch viel mehr, zum Beispiel auch die Daten extrahieren inkl. Blobs. Gruß Holger ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz