Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird-Datenbank per Code erstellen (https://www.delphipraxis.net/131848-firebird-datenbank-per-code-erstellen.html)

f4k3 1. Apr 2009 10:44

Datenbank: Firebird • Version: 2.1 • Zugriff über: ZeosLib Components

Firebird-Datenbank per Code erstellen
 
Moin Moin liebe DPler ;)

Ich code momentan ein Programm das CSVs einliest ... und diese Daten in eine Datenbank bzw. Tabelle "kopieren" soll ...
als "Export-Datenbank" will ich Firebird nehmen ...

nun ist es so ... dass ich 2 Optionen haben möchte ...

1. Option = Daten in neue Datenbank kopieren

# Dazu muss natürlich erst eine Datenbank erstellt werden. Per Dialog kann der Anwender sich die entsprechenden Felder zusammenbauen plus Releationen festlegen

2. Option = Daten in eine vorhandene Datenbank kopieren

# Hier muss festgelegt werden welche CSV "Spalte" in welches Datenbankfeld kopiert werden soll

...

Da ich nun bei Option 1 festhänge ... hab ich mir gedacht dass evtl. jemand einen Vorschlag für die Umsetzung hat.

Ich hatte mir gedacht dass man bestimmt die "isql" Kommandozeile mit Parametern ausführen kann, die dann die Datenbank erstellt.
Leider finde ich keine passende Dokumentation beim Firebird Webauftritt.

Ich hab noch nie mit den Commando-Tools gearbeitet ... weil in IBExpert die Sache wesentlich einfacher und schneller geht.

Ich hoff ihr könnt mir helfen ;)

Vielen Dank im Vorraus

Euer f4k3 ;) :P

Billa 1. Apr 2009 10:51

Re: Firebird-Datenbank per Code erstellen
 
Weil Du IBExpert schon ansprichst:

1. Erzeuge Dir doch die Datenbank erst einmal "von Hand" im IBExpert.
2. Metadaten extrahieren (inkl. aller Tabelleninhalte!!!)

IBExpert erzeugt Dir ein Script, dem Du beispielhaft die benötigten Kommandos entnehmen kannst...

shmia 1. Apr 2009 10:57

Re: Firebird-Datenbank per Code erstellen
 
Du verwechselt etwas die Begriffe "Datenbank" und "Tabelle".
Das erstellen einer neuen Datenbank sollte nicht in deiner Anwendung stattfinden.
Beim Anlegen einer neuen Datenbank sind Entscheidungen (Berechtigungen, Speicherort,...) zu treffen, die dein Programm eigentlich nichts angehen.
Das ist eine administative Aufgabe.
Ein neue Tabelle kannst du per SQL mit CREATE TABLE anlegen.
Dann musst du dem Benutzer aber einen Dialog anbieten, in dem er alle Felder mit Namen und Datentyp festlegen kann und zusätzlich die Primärschlüsselfelder anwählen kann.

Lemmy 1. Apr 2009 11:40

Re: Firebird-Datenbank per Code erstellen
 
hi,

die TXXXDatabase (TUIBDatabase, TZeos,...) haben eignetlich auch eine Methode um eine Datenbank zu erzeugen (CreateDatabase). Um Tabellen in der DB zu erzeugen verwendest Du einfach eine Query-Komponente und "wandelst" die Eingaben die der user im Dialog macht in entsprechende SQL-Befehle um (Create Table () usw.).

Ich finde diese Aussage zwar etwas pauschal:
Zitat:

Zitat von shmia
Das erstellen einer neuen Datenbank sollte nicht in deiner Anwendung stattfinden.

aber ein klein wenig muss ich ihm schon recht geben, weil mir kein wirkliches Szenario einfällt in dem deine Anwendung sinnvoll eingesetzt werden soll.

Lemmy

f4k3 1. Apr 2009 12:04

Re: Firebird-Datenbank per Code erstellen
 
Zitat:

Zitat von Billa
Weil Du IBExpert schon ansprichst:

1. Erzeuge Dir doch die Datenbank erst einmal "von Hand" im IBExpert.
2. Metadaten extrahieren (inkl. aller Tabelleninhalte!!!)

IBExpert erzeugt Dir ein Script, dem Du beispielhaft die benötigten Kommandos entnehmen kannst...

Ich werds mal versuchen ;) Danke

f4k3

RWarnecke 1. Apr 2009 12:12

Re: Firebird-Datenbank per Code erstellen
 
Hallo,

ich habe mal im Delphi-Forum diesen Beitrag für eine Interbase-Datenbank geschrieben. Sollte auch auf eine Firebird-Datenbank anwendbar sein.

f4k3 1. Apr 2009 12:13

Re: Firebird-Datenbank per Code erstellen
 
Zitat:

Zitat von shmia
Du verwechselt etwas die Begriffe "Datenbank" und "Tabelle".
Das erstellen einer neuen Datenbank sollte nicht in deiner Anwendung stattfinden.
Beim Anlegen einer neuen Datenbank sind Entscheidungen (Berechtigungen, Speicherort,...) zu treffen, die dein Programm eigentlich nichts angehen.
Das ist eine administative Aufgabe.

mhm ... ich muss dir zustimmen ... Es ist evtl. ungünstig diese funktion in eine Anwendung zu integrieren ...
aber nach den Vorgaben des Endzustandes muss diese Funktion enthalten sein.

Dieses Programm / Tool muss universell sein. Und es muss in soweit Programmiert sein, dass es nahezu keine Wünsche offen lässt.
Es sollen alle CSVs eingelesen werden können, egal mit welchen Separator oder sonstigen Spezifikationen.

Und die Daten aus der CSV müssen aus Testgründen in Paradox, MSSQL und Firebird Tabellen "exportierbar" sein.

Da ich dem Anwender soviel Arbeit und Einarbeitszeit wie möglich ersparen möchte, muss ich auch die Möglichkeit schaffen neue Datenbanken und Tabellen zu erstellen.

Auch wenn es evtl. nicht schlüssig erscheinen sollte, alles andere wäre unpraktikabel und würde den Anruf mehrere Kommandozeilen oder Anwendungen erfordern.

Zitat:

Zitat von shmia
Ein neue Tabelle kannst du per SQL mit CREATE TABLE anlegen.
Dann musst du dem Benutzer aber einen Dialog anbieten, in dem er alle Felder mit Namen und Datentyp festlegen kann und zusätzlich die Primärschlüsselfelder anwählen kann.

Ja manchmal ist die Lösung so einfach, dass man sie einfach nicht sieht ;)

Du hast natürlich recht und ich danke dir für den Tipp ;)

f4k3 1. Apr 2009 12:15

Re: Firebird-Datenbank per Code erstellen
 
Zitat:

Zitat von Lemmy
hi,

die TXXXDatabase (TUIBDatabase, TZeos,...) haben eignetlich auch eine Methode um eine Datenbank zu erzeugen (CreateDatabase). Um Tabellen in der DB zu erzeugen verwendest Du einfach eine Query-Komponente und "wandelst" die Eingaben die der user im Dialog macht in entsprechende SQL-Befehle um (Create Table () usw.).

Lemmy

mhm ... also eine Methode enthalten die Zeos-Komponenten zwar nicht ...
aber über den Query + DDL wird es denk ich sicher möglich sein ;)

Danke für dein Feedback

f4k3

f4k3 1. Apr 2009 12:24

Re: Firebird-Datenbank per Code erstellen
 
Zitat:

Zitat von f4k3

mhm ... also eine Methode enthalten die Zeos-Komponenten zwar nicht ...
aber über den Query + DDL wird es denk ich sicher möglich sein ;)

Ich nehms zurück ... :P

Es gibt eine Methode ...

Allerdings ist mir noch nicht ganz klar wie das ganze funktionieren soll :(

ich greif mal das Beispiel von RWarnecke auf ...

Der Code enthält in der Uses folgende Einträge ...
ZTransact, ZIbSqlTr, ZQuery, ZIbSqlQuery, ZConnect, ZIbSqlCon;

also entweder entsprechen diese einer anderen version ... weil meine ZLib-Uses sehen so aus:

ZAbstractRODataset, ZAbstractDataset, ZAbstractTable, ZDataset, ZConnection, ZSequence,
ZSqlMonitor, ZSqlProcessor, ZSqlMetadata, ZStoredProcedure, ZSqlUpdate;

und ich habe die oben genannten auch nicht.

Es handelt sich doch um die ZEOSLib oder?!

Gruß f4k3

RWarnecke 1. Apr 2009 12:45

Re: Firebird-Datenbank per Code erstellen
 
Ja, aber in der Version 5.x. Ich glaube es war zur Version 6 hin, wo die die Namen geändert haben.

Edit: Ich habe leider gerade kein Delphi mit Zeos zur Hand. Aber wenn Du über die IZConnection gehst, müsste es genau so gehen. Wenn das nicht klappt, muss ich es heute Abend mal an meinem Rechner daheim ausprobieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz