Benutzer-Werkzeuge

Webseiten-Werkzeuge


datenbank:postgresql_7.1.3

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)
/home/http/wiki/data/pages/datenbank/postgresql_7.1.3.txt · Zuletzt geändert: von manfred