Skip to main content

Primary links

  • Home
  • AI
  • Kubernetes
  • Incus
  • Ansible
  • Terraform
  • OpenStack
  • Virtualization
  • Linux
  • SmartHome
  • HowTo

Misc

  • Linux
  • Hardware
  • Programming
  • Databases
    • MySQL / MariaDB
    • Oracle
    • MS SQL
    • PostgreSQL
  • Multimedia
  • Windows

Cloud

  • OpenStack
  • cloud-config
  • nextcloud

Virtualization

  • Virtualization
  • Incus
  • Docker
  • KVM
  • Kubernetes
  • LXC
  • LXD
  • QEMU
  • VMware
  • VirtualBox
  • multipass
  • podman
  • vagrant
  • XEN

Network

  • DNS
  • Firewall
  • Linux
  • OpenvSwitch
  • SSL
  • VLAN
  • VPN
  • iPXE
  • namespaces
  • nmcli
  • tcpdump

Storage

  • CEPH
  • DRBD
  • LVM
  • S3
  • ZFS
  • btrfs

Automation / CI/CD

  • Install
  • Ansible
  • GitLab
  • LLM
  • Preseed
  • Puppet
  • Terraform
  • Ubuntu autoinstall

Monitoring / Visualisation

  • Grafana
  • Icinga
  • Prometheus
  • Monitoring
  • ELK
  • mermaid

Install

apt install -y postgresql

Snippets

# login
sudo -u postgres psql

# create
create database wiki;
create user wikijs with encrypted password 'wikijsrocks';
grant all privileges on database wiki to wikijs;

# delete
drop database if exists database_name;

-- enable formated output
\x on

-- show databass
\l
SELECT datname FROM pg_database WHERE datistemplate = false;

-- show tables
\dt
SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;


-- show user
\du

-- drop database
drop database foo;
echo "drop owned by zentras" | psql

-- exit
\q

-- Display tables structure
\d+

-- Display tables size
\dT+
select
    relname as "table",
    pg_size_pretty(pg_total_relation_size(relid)) as "size",
    pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) as "external size"
from pg_catalog.pg_statio_user_tables order by pg_total_relation_size(relid) desc;

-- quite output without header
psql -P t -c "SELECT table_name FROM information_schema.tables"

-- change database
\c dbname

-- import script?
\i /path/to/file.sql

-- login to db
sudo -u postgres psql 

-- delete database
drop database bar;

-- delete user
drop role foo;

-- delete all tables
psql USER -t -c "select 'drop table \"' || tablename || '\" cascade;' from pg_tables where schemaname='public'" | psql

# dump database
pg_dump -Fc -c db1 > /tmp/$(hostname -f).postgresql.db1.$(date +%Y-%m-%d_%H%M%S).dmp.gz

pg_dump -c db1 > /tmp/db1-postgres.sql
zip -9mq /tmp/postgres.sql.zip /tmp/postgres.sql

pg_dump -c foo | zip -9q > /tmp/$(hostname -f).foo.sql.zip

# allow login from any host
/etc/postgresql/9.5/main/postgresql.conf
listen_addresses = '*'

/etc/postgresql/9.5/main/pg_hba.conf
host  all  all 0.0.0.0/0 md5

# drop all
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;

# Ansible
https://opensource.com/article/17/6/ansible-postgresql-operations

# Backup
https://www.postgresql.org/docs/9.3/static/app-pgdump.html

# configuration
https://www.postgresql.org/docs/9.5/static/runtime-config-wal.html

# change user password
ALTER USER user_name WITH PASSWORD 'pass1234';

# optimization
sudo apt-get install -y libdbd-pg-perl libdbi-perl
wget https://raw.githubusercontent.com/jfcoz/postgresqltuner/master/postgresqltuner.pl
chmod +x postgresqltuner.pl 
./postgresqltuner.pl --database=postgres --user=postgres --password=pass1234

https://pganalyze.com/docs/install/01_enabling_pg_stat_statements
select * from pg_stat_statements;

# export shema only
pg_dump -d db1 --schema-only

# db restore
pg_restore -c -d db1 db1.dmp

# snippets
DO $$
DECLARE
    foo integer := 10;
    bar varchar := "bar124";
BEGIN
    select count(id) into MYCOUNT from table1 where foo ='bar';
    RAISE NOTICE 'Count MYCOUNT (%)', MYCOUNT;

    IF MYCOUNT = 1 THEN
        RAISE NOTICE 'MYCOUNT is 1';
    END IF;
END $$;

DO $$
DECLARE
    a integer := 10;
    b integer := 20;
BEGIN 
    select id into b from coma_communication;
    IF a > b THEN 
        RAISE NOTICE 'a is greater than b';
    ELSE
        RAISE NOTICE 'a is not greater than b';
    END IF;
END $$;

# print message
RAISE EXCEPTION 'user_id is %', user_id;

Vacuumdb / cleanup
https://www.postgresql.org/docs/9.5/static/app-vacuumdb.html

Tune
https://github.com/jfcoz/postgresqltuner

Links
https://www3.ntu.edu.sg/home/ehchua/programming/sql/PostgreSQL_GetStarted.html
https://www.niwi.nz/2013/02/17/postgresql-database-table-indexes-size/ - SHOW DATABASE, TABLE AND INDEXES SIZE ON POSTGRESQL
https://www.postgresql.org/docs/9.0/static/app-vacuumdb.html
https://www.postgresql.org/docs/9.1/static/app-reindexdb.html

Profiles GitHub StackOverflow LinkedIn Xing
Contact Imprint
© panticz 2026

Cookie-Einstellungen

Diese Website nutzt eingebettete Inhalte von Drittanbietern (z.B. YouTube, SoundCloud). Beim Laden dieser Inhalte werden Daten an die jeweiligen Anbieter übermittelt. Datenverarbeitungserklärung