Autor Beitrag
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 12.02.03 15:44 
Achso... Na dann... :)

Cu,
Udontknow
FaTaLGuiLLoTiNe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 5

Windows 7, Windows 8.1
Delphi XE
BeitragVerfasst: Mi 12.02.03 15:59 
Kommen wir dann mal zur Lösung Deines eigentlichen Problems :

Du willst also Deine komplette Datenbank entladen und in einer Datei speichern, ohne dass Du die Struktur der DB im Quelltext hinterlegst. Das solltest Du mit den TSession und TQuery Komponenten hinbekommen.

Diese Komponenten bieten Funktionen, um Alias- und Tabellennamen auszulesen (TSession.GetTableNames / TSession.GetAliasNames). Wenn Du die hast, kannst Du einfach auf jede Tabelle eine Abfrage machen und aus der Ergebnismenge die Feldtypen und -grössen (TField.DataType / TField.Size) auslesen.

Jetzt hast Du alle Informationen für Dein CREATE zusammen und kannst auch vernünftige INSERT - Anweisungen erzeugen.

Hoffe das war verständlich und dem Thema angemessen.
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 12.02.03 16:27 
Ich danke Dir für diesen Lösungsansatz. Ich werde da mal etwas mit rumexperementieren.

Mehr als einen Lösungsansatz wollte ich doch garnicht.

BIG THX
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 12.02.03 18:21 
Hi bis11,

muß mich doch nochmal zu Wort melden. Das ganze ist nicht so einfach. Ich vermute, Du willst einfach nur die grundlegenden Datendefinitionen aus der DB auslesen :?: Daß die dann an die jeweilige DB angepaßt werden müssen, ist ja jetzt geklärt. Um ein SQl-Script zu erstellen, daß so etwas bewerkstelligt, benutze ich IBexpert. Dort gibt es einen Menüpunkt "extract Metadata". Dann kann man noch sagen, ob man nur die Trigger will oder was anderes. Auch wird noch gefragt, ob auch die Daten mitgeschleppt werden sollen, oder nicht.

Ich benutze das z.B., um die DB umzubauen und zu testen. Wenn es jetzt mit UDF oder Domains (z.B. bei Oracle) Ärger gibt, mußt Du die Scripte eben umbauen, das Delphi Programm wahrscheinlich sowieso. Dann löschst Du die vielleicht vorhande DB, nicht unregistern, läßt das Script laufen und basta. Dann meckert nur noch Delphi.

_________________
Gruß
Hansa
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 12.02.03 19:45 
Hi Hansa,

ich habe Dir doch schon gesagt, dass ich nicht mit Triggern oder sonstigen arbeite. Der Vorschlag von FaTaLGuiLLoTiNe ist nur dazu da um eine Tabellenstruktur auszuelesen und dann diese Tabellenstruktur in eine neue Datenbank zu übernehmen. Mir ist schon seit einigen Posting klar, das ich das nicht so einfach machen kann.

Du solltest wissen, dass ich es immer gerne etwas anderst haben möchte als die anderen. Ich errinnere Dich mal an den Thread mit dem erstellen der Interbase-Datenbank mit einem Delphiprog und nicht über die IBConsole.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 12.02.03 21:46 
So, jetzt muss ich mich auch noch mal zu Worte melden:

Mit dem IB-Expert kannst du alle möglichen Metadaten extrahieren. Dies schliesst auch Tabellendefinitionen mit ein. Du würdest also dann ein SQL-Script ausgeben lassen können, daß dir sämtliche Tabellen erstellt, so wie sie in der DB sind, aus der du die Metadaten extrahiert hast. Da es bei den Feldtypen zwischen den einzelnen RDBMS so gut wie keine Unterschiede gibt, solltest du auf keine grösseren Schwierigkeiten stossen.

Du musst also nicht unbedingt FatalGouillotines Vorschlag folgen und etwas eigenes proggen.

Cu, :)
Udontknow
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 12.02.03 22:01 
Das ist mir klar, dass ich nichts eigenes proggen muß, wenn ich den IBExpert benutze.

1.) Ich kann den IBExpert meines Wissen nicht auf jede Datenbank anwenden.

2.) Brauche ich diese Funktion in einem Programm direkt und will das nicht über ein anderes Programm machen.

Wie gesagt, ich arbeite noch an dem Konzept. Deshalb brauche ich erstmal alle Informationen die ich bekommen kann. Deshalb ist der Vorschlag von FaTaLGuiLLoTiNe für mich im Moment das sinnvollste.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 12.02.03 22:31 
Moment, moment! Du musst das Script doch nur ein einziges Mal erstellen lassen, nämlich dann, wenn deine DB-Struktur feststeht. Falls du also gerade auf einer Interbase-DB entwickelst, kannst du das Script erstellen und es in deinem Programm ausführen lassen. Damit könntest du dann die Struktur der DB herstellen. Den Daten-Im/Export in den Tabellen an sich könntest du mit einem Clientdataset bewerkstelligen.

Cu,
Udontknow
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 12.02.03 23:08 
Das ist richtig, nur was ist, wenn jemand ein Warenwirtschaftssystem auf Oracle oder Interbase hat und nun das System erweitern möchte auf einen Online-Shop. Dann müsste er das Warenwirtschaftssystem mit den ganzen Daten nochmals eingeben für MySQL, da meines Wissens ich nicht mit PHP auf eine Oracle-Datenbank zugreifen kann. Oder er macht es von irgendeiner anderen Datenbank.