PostgreSQL сбор информации

Информация о версии СУБД
# su - postgres
$ psql --version

Размер базы данных
$ psql

postgres=# select pg_database_size('db_name');
 pg_database_size
------------------
          6955832
(1 row)

Отображение пути хранения файлов
postgres=# show data_directory;
-[ RECORD 1 ]--+-----------------------------
data_directory | /var/lib/postgresql/9.1/main

Информация контрольного файла
$ pg_controldata $PGDATA

$PGDATA - это путь data_directory

На примере версии 9.1
$ /usr/lib/postgresql/9.1/bin/pg_controldata /var/lib/postgresql/9.1/main/

pg_control version number:            903
Catalog version number:               201105231
Database system identifier:           5929464879089696231
Database cluster state:                in production
...

Список баз данных
$ psql -l

 Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 blindb    | boom     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 pf           | dev        | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 mysitedb  | dev      | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

Подробная информация о базах данных
postgres=# \x
postgres=# select  * from pg_database;

Отображение порта который слушает БД
postgres=# select inet_server_port();

Просмотр IP - адреса для подключения к БД
postgres=# select inet_server_addr();

Как долго запущен postgres
postgres=# select date_trunc('minute', current_timestamp - pg_postmaster_start_time()) as "uptime";

uptime
----------
 01:56:00
(1 row)

Просмотр текущего пользователя и БД
postgres=# select current_user;
postgres=# select current_database();

Информация о табличных пространствах
postgres=# select  * from  pg_tablespace;
  spcname   | spcowner |         spclocation          | spcacl | spcoptions
------------+----------+------------------------------+--------+------------
 pg_default |       10 |                              |        |
 pg_global   |       10 |                              |        |
(2 rows)

PostgreSQL экспорт и импорт отдельных таблиц

Создадим директорию для экспорта
$ mkdir export_tables
$ chown postgres:postgres export_tables/ ; chmod 755 export_tables/
Для экспорта/импорта стоит установить параметр client_encoding = UTF8 в postgresql.conf

Создана таблица
$ psql
select  * from exp_example;
   exp1   | exp2 |   exp3
----------+------+----------
 example1 |    1 | example2
(1 row)

Экспорт данных таблицы
copy exp_example to '/home/export_tables/exp_example.csv';
COPY 1

Очистим таблицу
truncate table exp_example;
TRUNCATE TABLE

select  * from exp_example;
 exp1 | exp2 | exp3
------+------+------
(0 rows)

Импорт данных таблицы
copy exp_example from '/home/export_tables/exp_example.csv';
COPY 1

select  * from exp_example;
   exp1   | exp2 |   exp3
----------+------+----------
 example1 |    1 | example2
(1 row)

Экспорт отдельных колонок
copy exp_example(exp2, exp3) to '/home/export_tables/exp_example(exp2,exp3).csv';

Импортируем аналогично
copy exp_example(exp2, exp3) from '/home/export_tables/exp_example(exp2,exp3).csv';

Экспорт с разделителем запятая
copy exp_example to '/home/export_tables/exp_example_delimeter.csv' with delimiter ',';

Экспорт с использованием запроса
copy (select exp1 from exp_example) to '/home/export_tables/exp_example_select';

Дополнительная информация