Problem bei Erstellung einer POSTGRES-DB

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Pegasus0211
Beiträge: 28
Registriert: Mo 18. Sep 2006, 07:48
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Scheeßel

Problem bei Erstellung einer POSTGRES-DB

Beitrag von Pegasus0211 »

Guten Tag,

ich habe ein kleines Programm geschrieben, mit dem eine Postgres-Datenbank erzeugt und mit Vorgabewerten gefüllt wird.

Es wird die sqldb-Komponente genutzt und alles ist ok.

Jetzt kommt als weitere Aufgabe, dass ein Template als Vorlage der Datenbank verwendet werden soll.

Leider kann ich beim Aufrufruf von pqconnection1.createdb keine weiteren Parameter eingeben.

Wie würdet Ihr das lösen?
Danke für Eure Antworten.

Gruß Bernd

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Problem bei Erstellung einer POSTGRES-DB

Beitrag von knight »

Wäre es nicht besser, wenn du ein SQl-Skript schreibst und dieses über das Verwaltungsprogramm der Datenbank ausführst? (Bei PostgreSQL kenne ich mich nicht so aus und kann deshalb keinen Namen benennen. Bei Firebird heißt das Programm ISQL.)

knight

Pegasus0211
Beiträge: 28
Registriert: Mo 18. Sep 2006, 07:48
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Scheeßel

Re: Problem bei Erstellung einer POSTGRES-DB

Beitrag von Pegasus0211 »

@knight

Guten Morgen,

danke für Deine schnelle Antwort; das SQL-Skript ist fertig, aber wir wollen die Erstellung der Postgres-Datenbank nicht den zufälligen Eingaben eines Benutzers überlassen.

Deshalb möchten wir die Datenbank per Lazarus-Programm erzeugen; leider funktioniert das nicht so, wie wir uns das vorstellten.

Freundliche Grüße aus der Lüneburger Heide


Bernd

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Problem bei Erstellung einer POSTGRES-DB

Beitrag von Christian »

Was möchtest du denn da für parameter eingeben ?
Die Tabellen werden dann einfach per SQL create table Statement erzeugt...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

piper62
Beiträge: 131
Registriert: Sa 5. Apr 2008, 17:57
OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
CPU-Target: 32Bit/64Bit
Wohnort: Ulm

Re: Problem bei Erstellung einer POSTGRES-DB

Beitrag von piper62 »

Ich weiss nicht wie weit sqldb bei multiplen SQL Statements ist um diese in einem Rutsch auszuführen.
Wir arbeiten mit ZeosLib...
Aber es sollte auch gehen wenn Du - wie von Christian angedeutet - jeweils ein "create table... " statement nach dem anderen zusammenbaust und dann über ExecSQL (so heisst es bei der ZeosLib) jeweils abschickst.

Pegasus0211
Beiträge: 28
Registriert: Mo 18. Sep 2006, 07:48
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Scheeßel

Re: Problem bei Erstellung einer POSTGRES-DB

Beitrag von Pegasus0211 »

Hallo,

ich glaube, wir reden aneinander vorbei :)

Es geht mir um die Erstellung der Datenbank; es wird nur ein CREATE DATABASE unter Verwendung zur Verfügung stehenden Parameter erledigt (Bankname, User, Port usw.).
Ich benötige aber ein 'CREATE DATABASE template=template_postgis'; in dem Template ist eine Datenbankvorlage, die unbedingt benötigt wird.

Wenn die Datenbank erstellt ist, dann kann ich sie füllen, das ist nicht das Problem und funktioniert gut.

Gruß Bernd

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Problem bei Erstellung einer POSTGRES-DB

Beitrag von knight »

Warum soll denn die Datenbank zur Laufzeit angelegt werden? Damit handelst du dir z.B. das Problem ein, daß du prüfen mußt, ob die Datenbank nicht schon existiert. Und von SELECT Abfragen über möglicherweise (noch) nicht existierende Strukturen gar nicht zu reden. Ich würde es für sinnvoller erachten, eine leere Datenbank (mit dem Template) anzulegen und diese dann bei Bedarf von Benutzer mit Daten füllen lassen. So viel Platz nimmt eine leere (nicht verwendete) Datenbank auch nicht weg.

knight

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Problem bei Erstellung einer POSTGRES-DB

Beitrag von Christian »

Und wie kommt die leere Datenbank auf den datenbankserver (mgl sogar im Internet) ??
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Pegasus0211
Beiträge: 28
Registriert: Mo 18. Sep 2006, 07:48
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Scheeßel

Re: Problem bei Erstellung einer POSTGRES-DB

Beitrag von Pegasus0211 »

Hallo,

vielleicht sollte ich doch etwas mehr erzählen, sorry...

Wir schreiben an einem Programm, welches zur Erfassung und zur Verwaltung archäologischer Funde verwendet werden soll.
Dieses Programm soll dann irgendwann als Freeware veröffentlicht werden.
Der Benutzer muss Postgres und Postgis installieren; die Grundstruktur einschließlich diverser Vorgabewerte (z.B. Fundfarben) wird einmalig mittels eines Lazarus-Programmes erzeugt.

Da funktioniert auch super; aber bei Neuanlage muss die Postgis-Vorlagedatenbank, die beim Installieren von Postgis eingerichtet wird, als Vorgabe verwendet werden, um die Spatial-Fähigkeit der Datenbank zu gewährleisten.
Die Datenbank wird ordnungsgemäß erzeugt; nur eben die Vorlage wird nicht genutzt, da der vorgeschriebene Parameter
template = template_postgis nicht an das Lazarusprogramm über die Standardkomponente SQLDB übergeben werden kann; die Datenbank wird zunächst lokal auf dem Rechner erzeugt.

Ich hoffe doch, dass sich die Unklarheiten nicht noch vermehrt haben

Gruß Bernd :)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Problem bei Erstellung einer POSTGRES-DB

Beitrag von af0815 »

Pegasus0211 hat geschrieben:Die Datenbank wird ordnungsgemäß erzeugt; nur eben die Vorlage wird nicht genutzt, da der vorgeschriebene Parameter
template = template_postgis nicht an das Lazarusprogramm über die Standardkomponente SQLDB übergeben werden kann;
Kommt eine Fehlermeldung, das er eine SQL-Syntax nicht kann bzw. das Parsing fehlschlägt ?

Ev. ist eine Abhilfe, das parsing ins SQLDB auszuschalten und es geht auch eingeschränkt das escapen mittels Backslash. Es war zumindest schom mal hier im Forum die Lösung für spezielle Befehle, damals im Zusammenhang mit MySQL (und einem Bugfix).

Die Frage für mich ist, was kommt bei Postgres an (erweitertes Log !?). Denn den Posts entnehme ich, das die Syntax normalerweise verarbeitet werden sollte.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten