Home / LinuxUser / 2003 / 02 / PostgreSQL als Datenbank für Star- und OpenOffice

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Datenbank an Office

PostgreSQL als Datenbank für Star- und OpenOffice

Eine Tabelle für Adressen

Eine Tabelle besteht aus Feldern, die einen ihren späteren Inhalt beschreibenden Namen bekommen und lediglich Daten eines bestimmten Typs (z. B. Text, Fließkomma-Zahl oder Datum) aufnehmen. Damit sich ein Datenbankeintrag überhaupt eindeutig ansprechen lässt, braucht man einen Primärschlüssel: Leider kann es mehrere Müllers in einer Adressdatenbank geben, sogar mehrere Peter Müllers, so dass sich die naheliegenden Namen nicht als solcher eignen. Der Ausweg ist eine "laufende Nummer".

Daher bekommt der erste Eintrag in der Tabellenentwurfstabelle den Feldnamen Nr, für den wir den Feldtyp Integer [int4] festlegen. Damit beschränkt sich die Größe der Adressdatenbank auf eine Milliarde Einträge, wie die Länge 10 bei den Feldeigenschaften zeigt. Zum Primärschlüssel wird diese zukünftige Tabellenspalte über das Kontextmenü, das man per rechtem Mausklick auf das kleine Dreieck in der Randspalte links neben dem Feldnamen erhält – ein kleines Schlüsselsymbol markiert sie anschließend als solchen (Abbildung 7).

Zudem fügen wir weitere Felder wie Name, Vorname und Wohnort ein. Will man sicherstellen, dass ein Feld, etwa der Name, unbedingt ausgefüllt wird, wählt man bei der Feldeigenschaft Eingabe erforderlich den Wert Ja aus. Als Feldtyp bietet sich meist Text variabler Länge (Text [ varchar ]) an – sogar für Postleitzahl- und Hausnummernfelder, damit es bei britischen Postleitzahlen, die Buchstaben enthalten, und der Hausnummer 2a keine Probleme gibt.

Beim Geburtstag empfiehlt sich hingegen der Datentyp Datum [ date ]. Diesen formatieren wir noch etwas spezieller über den Knopf mit den drei Punkten neben Format-Beispiel. Da das gewünschte Datumsformat a la 01.02.2003 nicht zur Auswahl steht, tragen wir in der unteren Zeile des Dialogs unter Format-Code TT.MM.JJJJ ein und betätigen mit OK. Wichtig dabei ist, dass der Punkt Sprache auf Deutsch steht (Abbildung 7).

Ein Klick auf das Diskettensymbol speichert die neue Tabelle unter einem passenden Namen wie adressen. Im Explorer lässt sie sich nun mit Daten füllen (Abbildung 8). Mit dem Fernglas-Symbol durchsuchen Sie die im Client dargestellten Datensätze, das Trichter-Symbol führt Abfragen auf SQL-Basis aus.

Abbildung 7: Entwurf der Adresstabelle

Abbildung 8: Ein Primärschlüssel darf nicht mehrfach verwendet werden

Kasten 2: ODBC-Konfiguration auf Windows-SQL-Clients

Der ODBC-PostgreSQL-Zugriff von Star- und OpenOffice auf einem Windows-Client lässt sich genau wie auf den Linux-Clients einrichten. Vorher muss lediglich der PostgreSQL-ODBC-Treiber für Windows von ftp://ftp.postgresql.org/pub/odbc eingespielt werden. Die zu Redaktionsschluss aktuelle Version heißt psqsqlodbc-07_02_0001.zip. Anschließend finden Sie ein ODBC-Icon in der Systemsteuerung; ein Klick darauf ruft den ODBC Data Source Administrator auf.

Beim ersten Zugriff auf die PostgreSQL-Datenbank haben die Windows-User zunächst erstmal nur Leserechte. Um dieses Manko zu beheben, entfernen Sie im Reiter System DNS bei der ODBC-Konfiguration unter Options (Advanced) die beiden "Read Only"-Häkchen sowohl bei Driver als auch bei Data Source (Abbildung 9). (Jörn Eisenkrätzer)

Abbildung 9: ODBC-Zugriff unter Windows

Wem die Datenbankdarstellung in Tabellenform nicht gefällt, kann – sobald die Tabellenstruktur angelegt ist – über Datei / AutoPilot / Formular ... eine Datenbankmaske bauen. Der AutoPilot führt über einen Dialog mit Auswahlkriterien durch den Formular-Design-Prozess; nachträgliche Änderungen am Formular sind im Nachhinein immer möglich.

Her mit den alten Access-Daten!

Um Daten von anderen Systemen auf das neue PostgreSQL-Client-Server-System zu migrieren, muss zunächst deren Tabellenstruktur mit der exakten Spaltenanzahl und den richtigen Datentypen nachgebaut werden. Anschließend füllt man sie mit einer als CSV-Tabelle gespeicherten Datenkopie.

Die Daten einer Access-Datenbank lassen sich beispielsweise in der Tabellenansicht in die Zwischenablage kopieren, in eine leere Excel-Tabelle einfügen und im .xls-Format speichern. Diese Datei laden Sie in OpenOffice und wählen Datei / Speichern unter aus. Unter Dateityp entscheiden Sie sich für Text CSV, vergeben einen Dateinamen und drücken den Speichern-Knopf. Eine Maske (Abbildung 10) fragt nun nach dem Ziel-Zeichensatz, dem Feldtrenner und dem Texttrenner. Als Trennzeichen zwischen Feldern legen Sie zum Beispiel das Pipe-Zeichen fest. Zeichenketten sollen nicht wie vorgeschlagen in doppelte Anführungszeichen gesetzt werden, weshalb Sie ins Texttrenner-Feld ein Leerzeichen schreiben.

Abbildung 10: CSV-Trennzeichen festlegen

Diese so aufbereitete Datei kopieren Sie nun mit psql in die zuvor angelegte PostgreSQL-Tabelle:

> psql Datenbankname

[…]Datenbankname
=# COPY Tabellenname
 FROM '/Pfad/Datenkopie
.csv' DELIMITERS '|';

Der Pfad und der Dateiname sowie das Trennzeichen werden in einfache Hochkommas gesetzt. Geht alles glatt, quittiert PostgreSQL dies mit der Meldung COPY. Im Fehlerfall macht sich das DBMS entsprechend bemerkbar, indem es auf die Zeilennummer der Import-Datei hinweist, in der der Konflikt auftrat.

So gibt es Probleme, wenn die Länge eines Datenfelds in der neuen Tabelle kürzer definiert ist als die eines importierten Zelleninhalts oder gar die Datentypen nicht übereinstimmen. Oft enthält die neue Tabelle aus Versehen auch mehr oder weniger Spalten als die alte. Eine weitere Fehlerquelle sind leere Feldeinträge in der CSV-Datei, die in der neuen Tabelle nicht erlaubt sind, z. B. bei einer "NOT NULL"-Deklaration im Tabellenentwurf oder bei einem Datum.

Glossar

Fremdschlüssel

Eine Datenbank besteht aus Tabellen. Jede Tabelle hat einen Primärschlüssel, das ist eine Spalte oder eine Spaltenkombination, über die sich ein Datensatz eindeutig ansprechen lässt (z. B. die Kunden-, Artikel- oder Bestellnummer). Wenn der Primärschlüssel einer Tabelle gleichzeitig als Primärschlüssel einer anderen Tabelle fungiert, haben wir es mit einem Fremdschlüssel zu tun: Angenommen, ein Kunde aus der Tabelle "Kunden" bestellt einen Artikel aus der Tabelle "Artikel". Dient die Kombination der Primärschlüssel von "Kunden" und "Artikel" als Primär- (und somit Fremd-) Schlüssel für die Tabelle "Bestellung", so kann man vom Bestellungsdatensatz sowohl auf die Daten des Kunden als auch auf die Eigenschaften des Artikels zurückgreifen, ohne dass in "Bestellung" alle Kunden- und Artikeldaten mehrfach aufgeführt werden müssen.

Transaktionen

Eine Gruppe logisch zusammenhängender SQL-Anweisungen, die nur gemeinsam ausgeführt werden können. Wenn aus dieser Gruppe eine einzige Anweisung nicht korrekt abgewickelt werden kann, muss das DBMS auch alle anderen verwerfen. Ein Beispiel: Ein Mitarbeiter wechselt von einer Kostenstelle zu einer anderen. In Tabelle "Kostenstelle_A" wird er gelöscht und soll in Tabelle "Kostenstelle_B" eingefügt werden. Passiert nach dem Löschen und vor dem Wiedereinfügen eine Havarie, die zu zwei Tagen Rechnerausfall führt, bekommt der arme Mitarbeiter bei einer Datenbank, der der Transaktionsmechanismus fehlt, für zwei Tage weniger Geld, weil er keiner Kostenstelle zuzuordnen ist.

Link

Ein symbolischer Link ist eine Verknüpfung auf eine Datei, die, wenn er angesprochen wird, alle Dateibefehle an die verlinkte Zieldatei weiterleitet.

Netzwerkmaske

Gibt an, welche Stellen einer IP-Adresse das Netzwerk und welche den Rechner spezifizieren. Zu diesem Zweck rechnet man die vier Stellen der IP-Nummer und der Netzwerkmaske ins binäre Zahlensystem um: 255=2^7+2^6+2^5+2^4+2^3+2^2+2^1+2^0=11111111 (binär); 255.255.255.0 entspricht daher 11111111.11111111.11111111.00000000. Alle Stellen, an denen die binäre Netmask eine 1 zeigt, bilden in einer zum Netz gehörenden IP-Adresse die Netzwerkkennung, die mit Nullen aufgefüllten Stellen rechts daneben die Rechnerkennung. Damit ist 192.168.1. im Beispiel der Netzwerkanteil an der IP-Adresse und die Adressen 192.168.1.1 bis 192.168.1.254 können an Rechner des Netzes vergeben werden. (192.168.1.0 dient per Default als Netzwerkadresse, 192.168.1.255 als sogenannte Broadcast-Adresse; beide stehen daher nicht zum Verteilen zur Verfügung.)

192.168.x.x

Die IP-Adressen 192.168.0.0 bis 192.168.255.255 (und damit auch das Netz 192.168.1.0 mit der Netzwerkmaske 255.255.255.0) sind für private Netze reserviert, deren Datenverkehr nicht ins Internet geroutet werden darf. (Da viele LANs diese Adressen verwenden, wäre nicht mehr klar, zu welchem privaten Netz die Pakete gehören.) Sollen solche Netze Zugang zum Internet bekommen, geht das nur über IP-Masquerading.

CSV

"Comma" oder "character separated values", ein Datenformat, bei dem der Inhalt von Tabellen als ASCII-Text abgespeichert wird. Als Trennzeichen ("Delimiter") zwischen Spalteneinträgen ("Feldtrenner") dienen Kommata oder andere dedizierte Zeichen.

Infos

[1] Jens Hartwig: "PostgreSQL", Addison-Wesley, ISBN 3-8273-1860-2

[2] Marc André Selig: "Von init an", LinuxUser 12/2002, S. 26 ff.

[3] Andreas Bauer: "Daten fest im Griff", LinuxUser 12/2001, S. 68 ff., http://www.linux-user.de/ausgabe/2001/12/068-datenbank/datenbank.html

Der Autor

Jörn Eisenkrätzer ist Linux-Fan, seit es der DLD als erster Distribution der Welt gelungen war, sein Notebook voll zu unterstützen. Als die parallele Windows-Installation crashte, übernahm Linux deren Festplattenplatz.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...