DBA1-13. 02. Использование psql

Поделиться
HTML-код
  • Опубликовано: 11 июл 2022
  • DBA1-13. Тема 02. Использование psql
    postgrespro.ru/education/cour...
    Авторы курса: Егор Рогов, Павел Лузанов, Илья Баштанов
    © Postgres Professional, 2015-2022
  • НаукаНаука

Комментарии • 23

  • @microsoft8792
    @microsoft8792 5 месяцев назад

    Отличная подача материала!

  • @Nodorgrom
    @Nodorgrom Год назад +2

    Спасибо за урок!

  • @ThorenSky
    @ThorenSky 3 месяца назад

    00:00:15 тема занятия
    00:00:34 что такое psql чем отличается от уже разобранного pg_ctlcluster
    00:01:16 чем хорош psql и для кого важно уметь им пользоваться
    00:01:40 запуск утилиты psql, данные для подключения к серверу PostgreSQL
    00:02:39 как внутри psql переподключится в другое место(база или от др. user-a)
    00:03:05 как узнать информацию о том к чему сейчас подключены ("где я?")
    00:03:25 получение справки. документация прямо из консоли и внутри psql.
    00:04:25 еще раз о том что такое psql и какие типы команд он поддерживает
    00:05:05 как отличить команды самого psql от SQL-команд. Основные команды psql
    00:05:46 команда для выхода из psql - \q
    00:05:52 К делу. консоль. интерактивный режим psql
    00:06:30 /conninfo узанём куда подключились и что значит вывод этой команды.
    00:07:05 откуда в курсе при подключении берётся бд student и юзер student
    00:07:20 форматирование результатов запросов в разные форматы
    00:08:05 как идёт отправка запроса на сервер `;` и `\g`
    00:08:44 что хранит системная таблица pg_tables
    00:09:10 о форматировании по умолчанию
    00:11:00 \x расширенный режим форматирования.
    00:12:15 выполнение отдельного запроса в расширенном(\x) формате; `\gx`
    00:12:50 как посмотреть какие еще есть форматы форматирования \pset
    00:13:25 взаимодействие pqsl с ОС `\! cmd`
    00:14:55 использование скрипты для psql
    00:16:50 \g | cmd прямая передача результата через канал(pipe) в нужную команду
    00:17:20 \i выполнение SQL-Запросов из скриптового файла
    00:17:40 как запускать скрипты прямо из shell-оболочки `psql -f myscript`
    00:17:55 \gexex помощник для автоматизации задач - прямой запуск резултата
    00:19:06 Переменные в psql и Управляющие конструкции(условные переходы)
    00:20:50 Зачем внутренние переменные psql.
    00:22:30 Список всех установленных переменных в psql. \set
    00:23:00 Условные операторы - if
    00:23:57 Проверка задана ли конкретная переменная \echo :{?varname}
    00:24:28 Использование проверки наличие переменной в условном операторе \if
    00:25:35 знакомство со структурой таблицы pg_tables
    00:26:55 настройка psql
    00:27:47 что можно настроить в ~/.psqlrc
    00:29:16 psqlrc: как просматривать вывод который не вмещается в один экран.
    00:30:24 psqlrc: пример создания своей "команды" для выполнения SQL запроса
    00:31:35 readline при сборке PostgreSQL из исходников. В чем польза и удобство
    00:32:45 Итог занятия.
    00:33:10 Практика.
    00:36:00 Практика+ ON_ERROR_ROLLBACK. Хитрый режим работы psql с транзакциями

  • @serhioramires3166
    @serhioramires3166 3 месяца назад

    Тема домашнего задания не расскрыта, что оотнимает время

  • @fedordostoevskiy4209
    @fedordostoevskiy4209 Год назад +1

    👍, очень понравилось. Как в школе всё чётко. В документации у вас с ходу не во всё въедешь. 🙄🙄🙄

  • @natashadala
    @natashadala Год назад

    На последнем слайде перед "Итогами" опечатка, лишняя пара верхних кавычек между знаками соединения: || ' '.' ' || - должно быть || '.' ||
    Правильно:
    SELECT tablename, pg_total_relation_size(schemaname||'.'||tablename) AS bytes FROM pg_tables ORDER BY bytes DESC LIMIT 5;

    • @PostgresProfessional
      @PostgresProfessional  Год назад

      Нет-нет, там все правильно: вся эта конструкция взята в кавычки, поэтому внутренние кавычки приходится дублировать. Там ведь \set top5 '...'

  • @natashadala
    @natashadala Год назад

    У меня не работает конструкция \if ... \else
    demo=> \if :{?working_dir}
    demo=> \else
    demo@> \set working_dir `pwd`
    \set command ignored; use \endif or Ctrl-C to exit current \if block
    demo@> \endif
    demo=> echo :working_dir
    demo->
    demo-> ^C
    \if: escaped
    demo=>
    Что я делаю не так?

    • @porodem
      @porodem Год назад +1

      мне удалось воспроизвести твой косяк😀 это было непросто. Похоже ты поставил пробел после \else . У тебя появилась собака в приветствии. Что это значит написано в описании по ссылке для задания №2 в практика+

  • @serhioramires3166
    @serhioramires3166 3 месяца назад

    Почему может не применяться команды из файла .psqlrc? Лежит в каталоге пользователя и прав на него хватает.

  • @perfect_mechanic
    @perfect_mechanic 11 месяцев назад +3

    0:32 - "п-г-к-т-эль" - Ох уж эти русские... Всегда у них английские слова и буквы изуродованы до неузнаваемости 😄

    • @vadimrudakov8907
      @vadimrudakov8907 8 месяцев назад

      Тем не менее, вы все поняли.

  • @ulmasjonkilichov487
    @ulmasjonkilichov487 Год назад

    После выполнения Практика+ просто так в psql зайти не получится. Так как вы экспортировали в окружение bin папку. Надо указать путь после пакетной установки. export PATH=/usr/lib/postgresql/13/bin:$PATH

    • @PostgresProfessional
      @PostgresProfessional  Год назад

      Скорее всего, проблема в чем-то другом. Установка пакета не требует изменения PATH, и практика никак это не ломает.

  • @KittenYour
    @KittenYour Год назад

    \set working_dir `pwd` - у меня просто строка записалась "pwd"

    • @PeterSidoroff
      @PeterSidoroff Год назад +3

      Возможно, вы в команде использовали не те кавычки. Надо использовать обратный апостроф (находится на той же клавише, что и буква Ё ).
      У меня все сработало:
      \set working_dir `pwd`
      \echo :working_dir
      /home/student

    • @vadimrudakov8907
      @vadimrudakov8907 8 месяцев назад

      @@PeterSidoroff по-английски этот символ называют backtick, добавляю к вашему комментарию.

  • @Devlyashov
    @Devlyashov Год назад

    После запуска psql выдаёт ошибку:
    "psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: role "student" does not exist"

    • @dolfovdolf694
      @dolfovdolf694 Год назад

      скорее всего у вас права на каталог, где инициализирован кластер БД, имеет другой пользователь (postgres). попробуйте переключиться на него, и от него запускать psql

    • @PostgresProfessional
      @PostgresProfessional  Год назад

      Ошибка говорит о том, что нет роли student. Это вы собрали сервер из исходных кодов (потому что в виртуальной машине эта роль заранее создана)? Тогда попробуйте подключиться под ролью postgres:
      psql -U postgres

    • @operatoroperiruet8265
      @operatoroperiruet8265 2 месяца назад

      как вы решили эту проблему?Возникла точно такая же