Tabellenstruktur kopieren

Themen rund um den praktischen Einsatz von Firebird. Fragen zu SQL, Performance, Datenbankstrukturen, etc.

Moderator: thorben.braun

Benutzeravatar
martin.koeditz
Beiträge: 443
Registriert: Sa 31. Mär 2018, 14:35

Guten Morgen Stefan,

es ging letztlich um das Auslesen der DDL-Strukturen auf DB-Ebene. Damit möchte ich Kopien einer Tabelle anlegen können. Mit Programmen wie FlameRobin etc. ist das natürlich kein Problem. Aber direkt auf DB-Ebene habe ich noch keine vollumfassende Lösung gefunden.

Gruß
Martin
Martin Köditz
it & synergy GmbH
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Da gibt es keine native Unterstützung.
Mittels Schemaabfragen über den Treiber erhält man dann die Spalten-/Index-/Constraint-Informationen um sich damit dann die DDL's selber zusammen zu bauen.
Das ist eben dasselbe, was eben IBExpert, FlameRobin und andere für dich erledigen.
Benutzeravatar
martin.koeditz
Beiträge: 443
Registriert: Sa 31. Mär 2018, 14:35

Da gibt es keine native Unterstützung.
Mittels Schemaabfragen über den Treiber erhält man dann die Spalten-/Index-/Constraint-Informationen um sich damit dann die DDL's selber zusammen zu bauen.
Das ist eben dasselbe, was eben IBExpert, FlameRobin und andere für dich erledigen.
Das ist mir schon klar. Das gleiche müsste man aber auch über Stored Procedures direkt in der DB aufbauen können. Letztlich benötigt man ja "nur" ein SQL-Statement.

Gruß
Martin
Martin Köditz
it & synergy GmbH
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Klar geht das.
Viel Spaß dabei;-).

Am Besten kann man sich dafür die Quellen des .Net-Treibers herunterladen und sich ansehen, wie da die Schema-Informationen aus den RDB$-Tabellen ausgelesen werden.
Ins besonders die Übersetzung der numerischen Feldtypen in SQL-Typen, da ja die FB alles über interne Strukturen in den RDB$-Tabellen ablegt.
Dies gilt dann ebenso für Indizes, Constraints. Für Views ist der native SQL in einem BLOB abgelegt.
Das Hauptproblem dabei ist, dass eben die Felder einer Tabelle grundsätzlich über Domains definiert werden.
Benutzeravatar
martin.koeditz
Beiträge: 443
Registriert: Sa 31. Mär 2018, 14:35

Am Besten kann man sich dafür die Quellen des .Net-Treibers herunterladen und sich ansehen, wie da die Schema-Informationen aus den RDB$-Tabellen ausgelesen werden.
Das ist eine gute Idee. Vielleicht etwas für einen Winterabend (oder -wochenende).

Dank und Gruß
Martin
Martin Köditz
it & synergy GmbH
Benutzeravatar
joerg_b
Beiträge: 17
Registriert: Mi 26. Sep 2018, 19:15

Hallo Martin

du kannst von den alten Interbase/Firebird Komponenten IBX die Komponente IBExtract nutzen, wenn du Delphi oder sden CBuilder hast.
Die macht , glaub ich, so ziemlich das, was du suchst.
Schöne Grüße aus dem Südharz
Jörg
Antworten