Wenig bekannte PostgreSQL-Funktionen
(hakibenita.com)-
Anzahl der bei Insert on Conflict (Upsert) geänderten/hinzugefügten Zeilen ermitteln:
xmax -
Berechtigungen für bestimmte Spalten vergeben
-
Multi-Pattern-Matching:
SIMILAR TOoder~-Reguläre Ausdrücke -
Den aktuellen Sequenzwert ermitteln, ohne ihn zu erhöhen:
pg_sequence_last_value() -
Multi-Line-SQL zusammen mit
\COPYverwenden:TEMPORARY VIEWoderCOPYund\gnutzen -
Das Setzen von Werten für automatisch generierte Schlüssel verhindern: Beim Erstellen der Tabelle
GENERATED ALWAYSangeben (stattGENERATED BY DEFAULT) -
Pivot-Tabellen erstellen:
pandas.pivot_table,\crosstabviewoder die Erweiterungtablefuncverwenden -
Dollar Quoting
→ Alles zwischen $$ und $$ wird als String erkannt
→ Tags im Inneren wie $JSON$ / $function$ können verwendet werden
→ Mit angehängtem ::jsonb lässt sich schnell ein jsonb-Objekt erzeugen
- Kommentare an DB-Objekten anbringen:
COMMENT ON TABLE/COLUMN; mit Dollar Quoting lassen sich auch lange String-Beschreibungen hinzufügen
→ Schreiben: COMMENT ON TABLE sale IS 'Sales made in the system';
→ Anzeigen: \d+ sale
- Den Verlauf je DB separat protokollieren
→ \set HISTFILE ~/.psql_history- :DBNAME
-
Autovervollständigung in Großbuchstaben ausgeben:
\set COMP_KEYWORD_CASE upper -
Sleep einfügen:
pg_sleep(Sekunden),pg_sleep_for('4 minutes 14 seconds') -
Erste/letzte Zeile einer Gruppe ohne Subquery holen:
DISTINCT ON (Gruppenspalte) -
UUID ohne
uuid-ossp-Erweiterung erzeugen:gen_random_uuid()erzeugt eine Version-4-UUID -
Reproduzierbare Zufallsdaten erzeugen: Mit
setseed()denselben Seed setzen -
Bedingungen hinzufügen, ohne bestehende Daten sofort zu validieren: Beim
ALTERzuerst nur mitNOT VALIDdie Bedingung hinzufügen und die bestehenden Daten später separat mitALTER VALIDATEprüfen -
Eine Oracle-Synonym-ähnliche Funktion nutzen:
search_pathändern (nützlich bei Zero-Downtime-Migrationen) -
Überlappende Ranges finden: Operator
OVERLAPS
4 Kommentare
Gibt es bei GeekNews nicht ein bisschen zu viele News über Postgres?! (Nur ein Scherz.)
Auch unser Produkt nutzt hauptsächlich pg, daher können wir dafür nur dankbar sein. :)
Wahrscheinlich liegt es daran, dass Postgres gerade total angesagt ist..!?
Postgres ist das Beste.
Sehe ich genauso.