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 с транзакциями
На последнем слайде перед "Итогами" опечатка, лишняя пара верхних кавычек между знаками соединения: || ' '.' ' || - должно быть || '.' || Правильно: SELECT tablename, pg_total_relation_size(schemaname||'.'||tablename) AS bytes FROM pg_tables ORDER BY bytes DESC LIMIT 5;
У меня не работает конструкция \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=> Что я делаю не так?
мне удалось воспроизвести твой косяк😀 это было непросто. Похоже ты поставил пробел после \else . У тебя появилась собака в приветствии. Что это значит написано в описании по ссылке для задания №2 в практика+
После выполнения Практика+ просто так в psql зайти не получится. Так как вы экспортировали в окружение bin папку. Надо указать путь после пакетной установки. export PATH=/usr/lib/postgresql/13/bin:$PATH
Возможно, вы в команде использовали не те кавычки. Надо использовать обратный апостроф (находится на той же клавише, что и буква Ё ). У меня все сработало: \set working_dir `pwd` \echo :working_dir /home/student
После запуска psql выдаёт ошибку: "psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: role "student" does not exist"
скорее всего у вас права на каталог, где инициализирован кластер БД, имеет другой пользователь (postgres). попробуйте переключиться на него, и от него запускать psql
Ошибка говорит о том, что нет роли student. Это вы собрали сервер из исходных кодов (потому что в виртуальной машине эта роль заранее создана)? Тогда попробуйте подключиться под ролью postgres: psql -U postgres
Отличная подача материала!
Спасибо за урок!
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 с транзакциями
Тема домашнего задания не расскрыта, что оотнимает время
👍, очень понравилось. Как в школе всё чётко. В документации у вас с ходу не во всё въедешь. 🙄🙄🙄
На последнем слайде перед "Итогами" опечатка, лишняя пара верхних кавычек между знаками соединения: || ' '.' ' || - должно быть || '.' ||
Правильно:
SELECT tablename, pg_total_relation_size(schemaname||'.'||tablename) AS bytes FROM pg_tables ORDER BY bytes DESC LIMIT 5;
Нет-нет, там все правильно: вся эта конструкция взята в кавычки, поэтому внутренние кавычки приходится дублировать. Там ведь \set top5 '...'
У меня не работает конструкция \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=>
Что я делаю не так?
мне удалось воспроизвести твой косяк😀 это было непросто. Похоже ты поставил пробел после \else . У тебя появилась собака в приветствии. Что это значит написано в описании по ссылке для задания №2 в практика+
Почему может не применяться команды из файла .psqlrc? Лежит в каталоге пользователя и прав на него хватает.
0:32 - "п-г-к-т-эль" - Ох уж эти русские... Всегда у них английские слова и буквы изуродованы до неузнаваемости 😄
Тем не менее, вы все поняли.
После выполнения Практика+ просто так в psql зайти не получится. Так как вы экспортировали в окружение bin папку. Надо указать путь после пакетной установки. export PATH=/usr/lib/postgresql/13/bin:$PATH
Скорее всего, проблема в чем-то другом. Установка пакета не требует изменения PATH, и практика никак это не ломает.
\set working_dir `pwd` - у меня просто строка записалась "pwd"
Возможно, вы в команде использовали не те кавычки. Надо использовать обратный апостроф (находится на той же клавише, что и буква Ё ).
У меня все сработало:
\set working_dir `pwd`
\echo :working_dir
/home/student
@@PeterSidoroff по-английски этот символ называют backtick, добавляю к вашему комментарию.
После запуска psql выдаёт ошибку:
"psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: role "student" does not exist"
скорее всего у вас права на каталог, где инициализирован кластер БД, имеет другой пользователь (postgres). попробуйте переключиться на него, и от него запускать psql
Ошибка говорит о том, что нет роли student. Это вы собрали сервер из исходных кодов (потому что в виртуальной машине эта роль заранее создана)? Тогда попробуйте подключиться под ролью postgres:
psql -U postgres
как вы решили эту проблему?Возникла точно такая же