Postgres Query

Пометим запросы/команды чтоб не забыть

Пометим запросы/команды чтоб не забыть

Воспользовавшись следующими переменными окружения, можно задать значения параметров соединения по умолчанию см. источник

  • PGHOST действует так же, как параметр соединения host.
  • PGPORT действует так же, как параметр соединения port.
  • PGDATABASE действует так же, как параметр соединения dbname.
  • PGUSER действует так же, как параметр соединения user.
  • PGPASSWORD действует так же, как параметр соединения password.

Выгрузка БД в указаную директорию спец. формате файлами. Самый быстрый и надежный способ бэкапа

pg_dump -v --format=d -j 5 -f "$OUT_DIR" -U $PGUSER -d $PGDATABASE [..$ARGS]

, или же выгрузка одной таблицы

pg_dump -v --format=d -j 5 -f "$OUT_DIR" -U $PGUSER -d $PGDATABASE -t $TABLENAME [..$ARGS]

Для востоновления

# // полное
pg_restore -U $PGUSER --format=d -d $PGDATABASE --disable-triggers -v $FILE
# // только данные не создавая схем
pg_restore -U $PGUSER --format=d -d $PGDATABASE --disable-triggers -v -a $FILE

# // или для одной таблицы (аналогично)
pg_restore -U $PGUSER --format=d -d $PGDATABASE --disable-triggers -v -t $TABLE $FILE
# // ... не создавая таблицу
pg_restore -U $PGUSER --format=d -d $PGDATABASE --disable-triggers -v -a -t $TABLE $FILE

Посмотреть какие есть таблицы в директории

 pg_restore --list /path/to/dir | grep -i 'table data' | awk '{print $7}'

Запросы

Показывает сколько какая таблица занимает на диск. Таблица total_usage показывает итоговый размер с учетом индесов и вакумов

SELECT
            schemaname||'.'||tablename AS full_tname,
            pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS total_usage,
            pg_size_pretty((pg_total_relation_size(schemaname||'.'||tablename) 
                                - pg_relation_size(schemaname||'.'||tablename))) AS external_table_usage
FROM pg_catalog.pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;