postgre.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 22 Feb 2016 12:46:36 +0200
changeset 1905 fba288d59662
parent 1711 379096db1a5b
child 1912 8b81a8f0f692
permissions -rw-r--r--
Include only local subsections into TOC. This prevent duplication of TOC when build single page HTML document. Also this make unnecessary CSS hack to hide document title as top level section.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1683
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
.. -*- coding: utf-8; -*-
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
.. include:: HEADER.rst
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
==========
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
 Postgre.
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
==========
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
.. contents::
1905
fba288d59662 Include only local subsections into TOC. This prevent duplication of
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1711
diff changeset
     8
   :local:
1683
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    10
Installing on Debian.
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
=====================
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
Install and create new user and database::
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    14
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    15
  $ sudo apt-get install postgresql postgresql-client
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    16
  $ sudo su - postgres
1708
f1924a82b246 Update instruction.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1703
diff changeset
    17
  % psql
1683
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    18
  postgres=# CREATE USER "mypguser" WITH PASSWORD 'mypguserpass';
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    19
  postgres=# CREATE DATABASE "mypgdatabase" OWNER "mypguser";
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    20
  postgres=# \q
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    21
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    22
Connect as user ``mypguser`` to new database::
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    24
  $ su - mypguser
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    25
  $ psql mypgdatabase
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
1709
f34c6bc973cb Create local host superuser.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1708
diff changeset
    27
In order to create local host superuser::
f34c6bc973cb Create local host superuser.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1708
diff changeset
    28
f34c6bc973cb Create local host superuser.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1708
diff changeset
    29
  $ sudo su - postgres
f34c6bc973cb Create local host superuser.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1708
diff changeset
    30
  $ createuser --superuser USER
f34c6bc973cb Create local host superuser.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1708
diff changeset
    31
  $ exit
f34c6bc973cb Create local host superuser.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1708
diff changeset
    32
  $ sudo -u USER psql
f34c6bc973cb Create local host superuser.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1708
diff changeset
    33
1683
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    34
..
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    36
  https://wiki.debian.org/PostgreSql
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
    Debian wiki instructions.
d99b4a277679 Installing on Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    38
1701
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    39
List databases, schemas and tables.
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    40
===================================
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    41
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    42
Default database is ``postgres``.
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    43
1709
f34c6bc973cb Create local host superuser.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1708
diff changeset
    44
To list databases and database locales::
1701
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    45
1702
d2b977ccbf4f List databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1701
diff changeset
    46
  $ psql -U pgadmin -l
d2b977ccbf4f List databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1701
diff changeset
    47
d2b977ccbf4f List databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1701
diff changeset
    48
or::
d2b977ccbf4f List databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1701
diff changeset
    49
d2b977ccbf4f List databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1701
diff changeset
    50
  => SELECT datname FROM pg_database WHERE datistemplate = false;
1701
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    51
  => \l
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    52
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    53
To switch databases::
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    54
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    55
  => \connect NAME
1684
88f1d11d2adf List all schemas.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1683
diff changeset
    56
88f1d11d2adf List all schemas.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1683
diff changeset
    57
Schemas::
88f1d11d2adf List all schemas.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1683
diff changeset
    58
88f1d11d2adf List all schemas.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1683
diff changeset
    59
  => select schema_name from information_schema.schemata;
88f1d11d2adf List all schemas.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1683
diff changeset
    60
  => select nspname from pg_catalog.pg_namespace;
88f1d11d2adf List all schemas.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1683
diff changeset
    61
  => \dn *
88f1d11d2adf List all schemas.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1683
diff changeset
    62
1701
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    63
To list all tables in the current database::
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    64
1702
d2b977ccbf4f List databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1701
diff changeset
    65
  => SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;
1701
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    66
  => \dt
6163ba5907d4 To switch databases.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1700
diff changeset
    67
1703
a85cc266dbdf Set default schema.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1702
diff changeset
    68
Set default schema.
a85cc266dbdf Set default schema.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1702
diff changeset
    69
===================
a85cc266dbdf Set default schema.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1702
diff changeset
    70
::
a85cc266dbdf Set default schema.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1702
diff changeset
    71
a85cc266dbdf Set default schema.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1702
diff changeset
    72
  set search_path to NAME;
a85cc266dbdf Set default schema.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1702
diff changeset
    73
1710
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    74
Database, table, index size.
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    75
============================
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    76
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    77
Database size::
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    78
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    79
  SELECT pg_database_size('geekdb');  -- in bytes
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    80
  SELECT pg_size_pretty(pg_database_size('dbname'));
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    81
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    82
List of databases sizes::
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    83
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    84
  \l+
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    85
1711
379096db1a5b List tables sizes
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1710
diff changeset
    86
List tables sizes::
379096db1a5b List tables sizes
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1710
diff changeset
    87
379096db1a5b List tables sizes
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1710
diff changeset
    88
  \d+
379096db1a5b List tables sizes
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1710
diff changeset
    89
1710
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    90
Table total size (with indexes)::
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    91
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    92
  SELECT pg_size_pretty(pg_total_relation_size('schemaname.tablename'));
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    93
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    94
Sole table size (without indexes and other)::
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    95
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    96
  SELECT pg_size_pretty(pg_relation_size('schemaname.tablename'));
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    97
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    98
Largest table in the PostgreSQL database::
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
    99
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   100
  SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   101
1700
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   102
Using psql client.
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   103
==================
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   104
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   105
Using password file ``~/.pgpass``::
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   106
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   107
  # comment
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   108
  hostname:port:database:username:password
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   109
  hostname:port:*:username:password
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   110
  hostname:*:*:username:password
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   111
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   112
Connect by::
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   113
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   114
  $ psql -U $USER -h $HOST  $SCHEMA
f987c277f760 Using psql client.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1684
diff changeset
   115
1710
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   116
How to view execution plan::
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   117
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   118
  EXPLAIN query;
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   119
  EXPLAIN ANALYZE query;
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   120
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   121
How to redirect the output of query to a file::
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   122
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   123
  \o output_file
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   124
  SELECT * FROM pg_class;
601c31753686 Database, table, index size.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1709
diff changeset
   125