psql список таблиц: команды и SQL-запросы для PostgreSQL
-
В psql часто нужно быстро посмотреть список таблиц в базе данных. Это помогает ориентироваться в структуре БД, проверять наличие объектов или планировать изменения. Команды вроде \dt упрощают задачу без лишних инструментов.
Такие приемы экономят время разработчикам и администраторам. Вы узнаете базовые команды psql, SQL-запросы к системным каталогам и варианты с дополнительной информацией. Пройдем от простого списка до анализа размеров таблиц.
Базовые команды psql для списка таблиц
В консоли psql команды с обратным слешем работают интерактивно и дают быстрый обзор. Они не требуют SQL и показывают таблицы текущей базы. Сначала подключитесь к нужной БД командой \connect dbname, иначе увидите только таблицы активной базы.
Команда \dt - основной способ вывести список всех таблиц в схеме public. Она отображает имя, тип и владельца. Для детализации используйте \dt+, которая добавляет размер и описание. Если таблиц много, фильтруйте по имени: \dt users покажет все с подстрокой “users”.
Вот ключевые варианты:
- \dt - базовый список таблиц в текущей схеме.
- \dt+ - расширенный вид с размерами и доступом.
- \dt schema_name* - таблицы конкретной схемы.
Команда Описание Пример вывода \dt Список таблиц Name|Type|Owner \dt+ С размерами Name|Size|Description \l или \list Список всех баз данных Name|Owner|Encoding Важно: Команды работают только в интерактивном режиме psql. Для скриптов используйте SQL.
SQL-запросы к information_schema для таблиц
SQL-запросы дают гибкость и работают в любом клиенте, не только psql. Основной источник - information_schema.tables, стандартный вид с метаданными. Запрос покажет table_name из схемы public, исключая системные.
Например, SELECT table_name FROM information_schema.tables WHERE table_schema = ‘public’; выведет чистый список. Добавьте ORDER BY для сортировки или фильтр по имени. Это полезно для скриптов или когда нужен точный контроль.
Преимущества SQL: можно комбинировать условия, выводить в файл или обрабатывать в приложении. Минус - чуть медленнее мета-команд psql на больших БД.
Полезные запросы:
- SELECT table_name FROM information_schema.tables WHERE table_schema NOT IN (‘information_schema’, ‘pg_catalog’);
- SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = ‘public’;
- SELECT schemaname, tablename FROM pg_tables WHERE schemaname = ‘public’;
Запрос Назначение Особенности information_schema.tables Список таблиц и views Стандарт SQL, все схемы pg_tables Только пользовательские таблицы Быстрее на больших БД pg_class Размеры и статистика С relpages для сортировки Нюанс: pg_tables игнорирует системные схемы, но проверяйте права доступа.
Просмотр размеров и статистики таблиц
Размер таблиц важен для оптимизации - большие объекты влияют на бэкапы и производительность. Команда \dt+ дает базовую статистику, но для точности используйте SQL к pg_class или pg_total_relation_size.
Запрос SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) FROM pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC; сортирует по размеру. Это учитывает индексы и TOAST-таблицы. Для одной таблицы: SELECT COUNT(*) FROM table_name; но на миллионах строк это долго.
Альтернатива - приблизительный подсчет через relpages из pg_class. Быстро, но неточно. Комбинируйте с \di для индексов.
Варианты анализа:
- SELECT relname, relpages FROM pg_class ORDER BY relpages DESC LIMIT 5; - топ-5 по размеру.
- SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||‘.’||tablename)) FROM pg_tables ORDER BY pg_total_relation_size(schemaname||‘.’||tablename) DESC;
- SELECT COUNT(*) FROM table_name; - точное количество строк.
Функция Что показывает Когда использовать pg_size_pretty Размер в KB/MB/GB Отчеты и мониторинг pg_total_relation_size Таблица + индексы Полная статистика relpages Примерные страницы Быстрый просмотр Совет: Для больших таблиц избегайте COUNT(*) - используйте статистику планировщика.
Дополнительные команды для навигации по БД
Полезно знать не только таблицы, но и связанные объекты. \d table_name опишет структуру с колонками и типами. \du покажет пользователей, \dv - представления.
Эти команды ускоряют администрирование. Например, \dp или \z перечислит привилегии на таблицы. Для экспорта: \o file.txt перед запросом.
Список расширений:
- \d+ table_name - детальное описание таблицы.
- \di - список индексов.
- \ds - последовательности.
- \connect dbname - смена базы.
Команды для полного контроля над схемой
Иногда нужны все детали сразу. Команды вроде \dn показывают схемы, \df - функции. Соберите полный обзор: сначала \l для баз, \connect, затем \dt+ и \d для ключевых таблиц.
Это базовый набор, но есть нюансы с правами - без суперпользователя системные таблицы скрыты. Для продвинутых случаев смотрите pg_catalog целиком.
Работа с psql выходит за простые списки
Мы разобрали команды от \dt до SQL для размеров - этого хватает для 90% задач. Осталось изучить расширения вроде \df для функций или скрипты автоматизации. Подумайте о pgAdmin для GUI, если консоль неудобна, и мониторинге через EXPLAIN.
© 2024 - 2026 ExLends, Inc. Все права защищены.