Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Базы данных
  4. psql список таблиц: команды и SQL-запросы для PostgreSQL

psql список таблиц: команды и SQL-запросы для PostgreSQL

Запланировано Прикреплена Закрыта Перенесена Базы данных
psqlpostgresqlтаблицы
1 Сообщения 1 Постеры 2 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsxK В сети
    kirilljsxK В сети
    kirilljsx
    js
    написал отредактировано
    #1

    В 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.

    1 ответ Последний ответ
    0

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com
    • Наш чат
    • Наш ТГ канал

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы