Verbindung aufnehmen …
psql
psql -ddatenbank -U user -h hostname
psql -d template1 -c '\l'
psql -d template1 -c'select * from pg_stat_activity'
psql -d template1 -f create_testdatenbank.sql
Datei create_testdatenbank.sql:
CREATE DATABASE testdatenbank WITH OWNER=postgres ENCODING='UNICODE';
Was ist ein Schema?: Ein Schema ist im Prinzip ein Namensraum unterhalb einer Datenbank: Es enthält benannte Objekte (Tabellen, Datentypen, Funktionen und Operatoren), die die gleichen Namen haben können wie andere Objekte in anderen Schemas. Auf benannte Objekte wird zugegriffen, indem man entweder ihre Namen mit dem Schemanamen als Präfix „qualifiziert“ oder die gewünschten Schemas in den Suchpfad einfügt. 1)
Fehlen Tabellen, Datentypen, Funktionen oder Operatoren die eigentlich da sein sollten? Dann erst mal prüfen, ob das richtige Schema gerade im Suchpfad ist. 2)
postgres=# \dn # \dn List of schemas Name | Owner --------------------+------------- anderes_schema | anderer_user public | postgres
welches Schema verwende ich gerade?
show search_path ;
anderes schema verwenden
set search_path=anderes_schema;
$ psql -l
oder \l
im interaktiven Modus
$ psql Welcome to psql 8.2.5, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit postgres=# \l List of databases Name | Owner | Encoding -----------+----------+---------- meinedb | postgres | UTF8 postgres | postgres | UTF8 template0 | postgres | UTF8 template1 | postgres | UTF8 (4 rows) postgres=#
$psql -d meinedb ... meinedb=# \dt List of relations Schema | Name | Type | Owner --------+--------------+-------+---------- public | tabellenname | table | postgres
meinedb=# \d tabellenname Table "public.tabellenname" Column | Type | Modifiers ----------+------------------------+----------- id | bigint | not null name | character varying(200) | not null count | bigint | Indexes: "pk_tabellename" PRIMARY KEY, btree (id)
Kompliziertere Methode dort beschrieben: http://forums.devshed.com/postgresql-help-21/show-databases-show-tables-describe-table-38544.html#post160440
Zeige mir alle Funktionen:
\df
zeig mir den Code der Funktion func_tuwas:
\df+ func_tuwas
\H
- von "Aligned" Ausgabe auf HTML-Ausgabe oder zurück umschalten\dp
- zeige alle Zugriffsprivilegien von Tabellen, Views und Sequenzen\dF
- zeige alle "Textsuchekonfigurationen" (List of text search configurations) 3)\dF+ pg_catalog.german
- ausführlicher für eine tsearch Konfigurationzeige alle bestehenden Verbindungen zur Datenbank:
select * from pg_stat_activity;
zeige die Datenbank-Verbindungen, die "IDLE in transaction sind" (wenn das viele sind, kann VACUUM nicht richtig arbeiten)
select * from pg_stat_activity where current_query='<IDLE> in transaction';
cross join:
select a.email,b.upper from (select email from mail_weiterleitung where email~'@example.org' and destination ~'storm.example.com') as a cross join (select * from upper('OK')) as b; email | upper --------------------------------+------- hauke.haien@example.org | OK elke.volkerts@example.org | OK ole.peters@example.org | OK pole.poppenspaeler@example.org | OK lisei.paulsen@example.org | OK joseph.tendler@example.org | OK mutter.stine@example.org | OK
INSERT in andere Tabelle mit CROSS JOIN:
insert into mail_empfangimmerlaubt (mailadresse,aktion,kommentar) select a.email,b.upper,c.lower from (select email from mail_weiterleitung where email~'@example.org' and destination ~'storm.example.com') as a cross join (select * from upper('OK')) as b cross join (select * from lower('2010-08-25 kommentar')) as c ;
2014-03-10
gilt für alle Tipps, Tricks & Spickzettel:
dies sind einfache, teils banale Notizen für meinen persönlichen Gebrauch,
die hier eher zufällig auch öffentlich lesbar sind
(vielleicht hilft es ja jemandem weiter). Verwendung auf eigene Gefahr
Fehler-Hinweise, Dankesschreiben , etc. bitte an: web.21@unixwitch.de
weitere Tools / Spickzettel