psql

tryb OS

psql [option] -d [dbname] -h [hostname] -U [username]
psql -l lista baz
psql -f [file] pobieraj komendy z pliku

tryb psql

psql syntax:
\timing ustaw wskazanie czas wykonania SQL
\q wyjdź
\password ustaw hasło
\pset zmień ustawienia psql
\l pokaż bazy
\d [table] opis tabeli
\c [database] podłącz do bazy
\da funkcje agregujące
\db+ przestrzenie tabel
\dc conversions
\df+ funkcje
\dg+ \du+ role
\di+ indeksy
\ds+ sekwencje
\dt+ tabele
\dv+ widoki
\dSvtis+ widoki systemowe,tabele,indeksy,sekwencje
\dn+ schematy
\do operatory
\dp uprawnienia
\encoding kodowanie bazy
\l+ opis bazy
\z obiekty z uprawnieniami
\o [file] plik spool
\! [command] wykonaj komendę OS
help commands:
\? info about commands with backslash
\h sql help
parametery:
show all parametry psql
show [parametr] pokaż parametr
show search_path pokaż parametr search_path
set search_path to [other_schema] ustaw parametr search path na nowy schemat

lokalizacje

default binary path /usr/local/psql/pg

zmiana bieżącego kontekstu:

  • show search_path;
  • \dn;
  • set search_path to <schema>;

pg_ctl:

pg_ctl status status klastra
pg_ctl -D [cluster_dir] [action] status klastra z określonej lokalizacji
pg_ctl start/stop/restart start,stop klastra, można dodać -l [logfile]
pg_ctl stop -m [smart/fast/immediate] stop klastra w określonym -m trybie: smart(default), fast(with rolleback transactions, immediate(shutdown abort)
pg_controldata [cluser_dir] info klastra

tworzenie klastra:

initdb –pgdata/-D [cluster_dir] [-E encoding] #cluster initialization,create template1 and postgres database

tworzenie bazy:

createdb [dbname] [-D tablespace] [-E encoding] [-O owner] [-T template to create new database]

polecenia SELECT dla administratora:

SELECT pg_database_size('[dbname]’); rozmiar bazy
SELECT pg_size_pretty(pg_database_size('[dbname]’)); rozmiar bazy w formacie
SELECT pg_size_pretty(pg_total_relation_size('[table]’)); rozmiar tabel z indeksami
SELECT pg_size_pretty(pg_relation_size('[table]’)); rozmiar bazy bez indeksów
SELECT spcname FROM pg_tablespace;
SELECT relname,relpages FROM pg_class WHERE;

pg_dump(eksport)

pg_dump [db_name] > [file] dump in plaintext format
pg_dump -t '[table]’ [db_name] > [file]
pg_dump -Fc dump in pg_restore format
pg_dumpall > [file] dump all databases (dump the cluster)

import:

psql [db] < [plik] import z pliku w formacie tekstowym
psql -f [file] postgres import z pliku w formacie tekstowym (de facto wykonanie poleceń z pliku
pg_restore -d [baza] [plik] import z pliku w formacie pg_restore
pg_restore -l [plik] pokaż zawartość dumpfile

zmiana IP dla hosta:

  1. change in $PG_DATA/postgresql.conf
  2. change in $PG_DATA/pg_hba.conf (according manual – chapter 20: Client Authentication)

zarządzanie uprawnieniami i rolami:

  • sprwdzenie:
    • \dg #sprawdzenie uprawnień systemowych
    • SELECT * FROM pg_roles;
  • tworzenie roli:
    • CREATE ROLE [role_name];
  • zmiana:
    • ALTER ROLE [role_name] SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | CONNECTION LIMIT [connlimit] | PASSWORD [password] | ENCRYPTED | UNENCRYPTED | VALID UNTIL [timestamp]
  • zmiana hasła:
    • ALTER ROLE [role] PASSWORD '[pass]’;
  • nadanie uprawnienia do roli
    • GRANT [privs] ON [object] TO [role];
  • zmiana uprawnień do obiektu:
    • \z #sprawdź uprawnienia
    • =xxxx #uprawnienia nadane na PUBLIC
    • username=xxxx #uprawnienia nadane dla usera
    • groupname=xxxx #privileges nadane dla grupy

flagi uprawnień

r SELECT („read”)
w UPDATE („write”)
a INSERT („append”)
d DELETE
R RULE
x REFERENCES
t TRIGGER
X EXECUTE
U USAGE
C CREATE
T TEMPORARY
arwdRxt – ALL PRIVILEGES (for tables)

misc:

  • ALTER TABLE [table] ALTER COLUMN [column] TYPE int USING [column]::int; #change column type from char to in
  • variable PGDATA point to cluster catalog