====== PostgreSQL 7.1.3 ====== Start mit PostgreSQL ==================== ### ############################################################################### ### Postgresql: =========== Ausserdem steht online das Buch von Bruce Momijan zur Verfuegung: http://www.ca.postgresql.org/docs/aw_pgsql_book/index.html Das Buch ist bei Addison Wesley in deutscher uebersetzung erschienen; nach meiner Meinung nicht nur das beste Buch zu Datenbanken, sondern eines der besten auf dem IT-Buchmarkt ueberhaupt, vergleichbar mit LaTeX von Kopka und Linux von Kofler! ### ############################################################################### ### FreeBSD (postgresql 7.1.3): =========================== Initialisierung eines Datenbank-Clusters: ----------------------------------------- ### für den Standart DB-cluster /usr/local/pgsql/data su -l pgsql -c initdb oder su -l pgsql -c "initdb --encoding=ISO8859-15" # kann Umlaute oder su -l pgsql -c "initdb --encoding=LATIN9" # kann Umlaute oder su -l pgsql -c "initdb --encoding=SQL_ASCII" # Standard, kann keine Umlaute oder su -l pgsql -c "initdb --encoding=UNICODE" # soll alles können (aber nicht bei mir) oder su -l pgsql -c "initdb -E ISO8859-15" # kann Umlaute oder su -l pgsql -c "initdb -E LATIN9" # kann Umlaute oder su -l pgsql -c "initdb -E SQL_ASCII" # Standard, kann keine Umlaute oder su -l pgsql -c "initdb -E UNICODE" # soll alles können (aber nicht bei mir) ### für einen gesonderten DB-cluster /usr/local/pgsql/adressen su -l pgsql -c "initdb -D /usr/local/pgsql/adressen" Start von PostgreSQL unter FreeBSD: ----------------------------------- normaler Weg: /usr/local/etc/rc.d/010.pgsql.sh start weitere Start-Moeglichkeiten: /usr/local/bin/postmaster -D /usr/local/pgsql/data /usr/local/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start Fuer postmaster Einstallungen, siehe ~pgsql/data/postgresql.conf (/usr/local/pgsql/data/postgresql.conf) ############################################################################### # Postgresql: ----------- Ausserdem steht online das Buch von Bruce Momijan zur Verfuegung: http://www.ca.postgresql.org/docs/aw_pgsql_book/index.html Das Buch ist bei Addison Wesley in deutscher uebersetzung erschienen; nach meiner Meinung nicht nur das beste Buch zu Datenbanken, sondern eines der besten auf dem IT-Buchmarkt ueberhaupt, vergleichbar mit LaTeX von Kopka und Linux von Kofler! #=============================================================================== EINLOGGEN: psql -U pgsql [Datenbank] \l # SHOW DATABASES \dt # SHOW TABLES \? # alle Kuerzel #------------------------------------------------------------------------------ su - [postgres/pgsql] initdb vi ~/pgsql/data/pg_hba.conf ### die letzten beiden Zeilen einkommentieren (ist in aktuellen Versionen aktiv) local all trust host all 127.0.0.1 255.255.255.255 trust createuser [user] createdb -U pgsql --encoding=SQL_ASCII [database] oder createdb -U pgsql --encoding=LATIN9 [database] # Backup zurueckschreiben: psql -f db.out [database] pgsql psql -U pgsql -d [database] -f db.out #------------------------------------------------------------------------------ # "IDENT authentication failed for user ..." # ========================================== You have enabled ident-based authentication for user opennms in your postgres-configuration and either failed to start the identd server or enabled the feature in error. Have a look in ~postgres/data/{pg_hba.conf|pg_ident.conf} for an explanation of how this is supposed to work. "Host-based access control": pg_hba.conf siehe "http://nodevice.com/sections/ManIndex/man1093.html" Default-Einstellungen muessen aktiviert werden: local all trust host all 127.0.0.1 255.255.255.255 trust #------------------------------------------------------------------------------ Auf der Kommandozeile erfolgen die Eingabe von Datenbankbefehlen wie folgt: --------------------------------------------------------------------------- "pgsql" # FreeBSD - PostgreSQL-[USER] "postgres" # Linux - PostgreSQL-[USER] ### auflisten aller Datenbanken: psql -U [USER] -l ### reorganisieren einer Datenbank psql -d [DATABASE] -U [USER] -c "VACUUM ANALYZE" oder psql -U [USER] -c "VACUUM ANALYZE" [DATABASE] oder psql -c "VACUUM ANALYZE" [DATABASE] [USER] ### einfache SELECT-Anweisung psql -d [DATABASE] -U [USER] -c "SELECT * FROM [TABELLE]" ### einfache INSERT-Anweisung psql -d [DATABASE] -U [USER] -c "INSERT INTO [TABELLE] (spalte1, spalte2, spalte3, spalte4) VALUES ('wert1','wert2','wert3','wert4');" oder psql -c "INSERT INTO [TABELLE] (spalte1, spalte2, spalte3, spalte4) VALUES ('wert1','wert2','wert3','wert4');" [DATABASE] [USER] bei der Fehlermeldung "Argument list too long" ist es so besser: echo "INSERT INTO [TABELLE] (spalte1, spalte2, spalte3, spalte4) VALUES ('wert1','wert2','wert3','wert4');" | psql -d [DATABASE] -U [USER] oder echo "INSERT INTO [TABELLE] (spalte1, spalte2, spalte3, spalte4) VALUES ('wert1','wert2','wert3','wert4');" | psql [DATABASE] [USER] #=============================================================================== SQL: ---- Auf der Kommandozeile kann man eine Datenbankanfrage nach den folgenden drei Syntaxformen eingeben: psql -U [USER] -d [Datenbank] -c "[SQL-Befehl]" psql -U [USER] -c "[SQL-Befehl]" [Datenbank] psql -c "[SQL-Befehl]" [Datenbank] [USER] (SQL-Befehle siehe unter: "programmierung/sql/ansi-sql92") Man kann auch die SQL-Statements in eine Datei schreiben und diese dann von psql einlesen lassen (z.B. fuer ein Backup). Das geht folgendermassen: psql -U pgsql -f [Dateiname.sql] [Datenbank] psql -U pgsql -d [Datenbank] -f [Dateiname.sql] #=============================================================================== BACKUP: ------- Sichern der Datenbanken (z.B. fuer ein Backup): ### FreeBSD-Beispiel ### $ su - pgsql $ pg_dumpall > db.out oder $ pg_dumpall -U pgsql > /root/db.out Um die Datenbanken wieder einzuspielen (z.B. nach einer Neuinstallation): ### FreeBSD-Beispiel ### ### Datenbank wieder installieren cd /usr/ports/databases/postgresql7/ && make install && make clean ### Datenbank initialisieren su -l pgsql -c initdb ### Datenbanksystem starten /usr/local/etc/rc.d/010.pgsql.sh start ### alle Datenbanken auflisten psql -U pgsql -l ### das Backup wieder zurueckspielen psql -U pgsql -d template1 -f db.out ### alle Datenbanken auflisten psql -U pgsql -l ### Tabellen der Datenbank "[Datenbank]" auflisten psql -U pgsql -c "\dt" [Datenbank] DUMP aller Tabellen in FreeBSD: su - pgsql -c pg_dumpall > /var/tmp/db.out DUMP aller Tabellen in Linux: su - postgres -c pg_dumpall > /var/tmp/db.out oder interaktiv (nachdem man sich in die Datenbank eingeloggt hat) mit "\i". DUMP der Datenbank "adressen": pg_dump -U pgsql -d adressen > /var/tmp/adressen.out die Datenbank "adressen" in einem neuen DBMS wieder herstellen: Datenbank erstellen createdb -U pgsql -e adressen oder createdb -U pgsql -E LATIN9 -e adressen Daten wieder einspielen psql -U pgsql -d adressen -f adressen.out oder psql -f db.out adressen pgsql Tabelle löschen psql -U pgsql -d [Datenbank] -c "DROP TABLE [Tabelle]" Datenbank löschen dropdb -U pgsql [Datenbank] #------------------------------------------------------------------------------ alte Versionen (6.5): --------------------- USAGE To dump all databases: % su - postgres/pgsql % pg_dumpall -o > db.out Tip: You can use most pg_dump options for pg_dumpall. To reload this database: % psql -e template1 < db.out Tip: You can use most psql options when reloading. Application 15 August 1999 1 #------------------------------------------------------------------------------ neue Versionen (7.1, 7.2): -------------------------- EXAMPLES To dump all databases: $ su - postgres/pgsql $ pg_dumpall > db.out To reload this database use, for example: $ psql -f db.out template1 (It is not important to which database you connect here since the script file created by pg_dumpall will contain the appropriate commands to create and connect to the saved databases.) Application 2000-12-19 PG_DUMPALL(1) #------------------------------------------------------------------------------ Beispiele als gepackte SQL-Dateien fuer PostgreSQL. #------------------------------------------------------------------------------ Feldtrennzeichen definieren: ---------------------------- psql -U pgsql -d [Datenbank] -F ' ' # Leerzeichen als Trennung psql -U pgsql -d [Datenbank] -F " " # '" "' als Trennzeichen (also 3 Zeichen) \pset fieldsep ' ' # Leerzeichen als Trennung \pset fieldsep " " # '" "' als Trennzeichen (also 3 Zeichen)