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
