SQLPad для удобной работы с запросами к SQL серверу

Публикация № 1356921

Технологии - Виртуализация

SQLPad SQL Docker Devops

В этой статье описывается веб-приложение SQLPad для работы с запросами к SQL серверу.

Хочу рассказать о своем опыте работы с SQLPad - это приложение для хранения списка запросов и выполнения их. Почему то в моем окружении нет людей, которые бы знали о нем. Делюсь информацией. Впервые этот SQLPad я увидел в середине прошлого года на вебинаре известного в узких кругах Алексея Лустина (в данный момент он отсутствует на инфостарте, поэтому привожу ссылку на старое интервью с ним - Готовые решения: Алексей Лустин. Выпуск №2).

SQLPad - это веб-приложение, выглядит так:

По должности я очень много работаю с SQL запросами. SQLPad значительно упрощает мою работу за счет сохранения списка запросов и простого запуска запросов "из одного окна" к разным SQL серверам.

Сайт проекта sqlpad.github.io.

Разработчики приложения декларируют поддержку серверов Postgres, MySQL, SQL Server, ClickHouse, Crate, Vertica, Presto, Pinot, Drill, SAP HANA, Snowflake, BigQuery, SQLite. Внушительный список, правда? Я обычно работаю только с SQL Server от Microsoft, но кому то из моих коллег возможно будет интересно подключить приложение к Postgres.

Статья состоит из двух основных частей - использование приложения и установка его в docker.

Использование приложения

Это веб-приложение, оно живет на сервере, доступ к нему осуществляется через браузер. Обычно оно доступно на порту 3000.

Авторизация. Работа с пользователями.

Мое тестовое приложение находится на localhost. По адресу http://localhost:3000/ открывается окно авторизации. Первым должен зайти админ (кнопка Sign In), которого мы укажем при начальной настройке приложения. Кнопка Sign Up может ввести в заблуждение, потому что позволяет зарегистрироваться только пользователю, которого  администратор предварительно укажет в списке пользователей.

Пользователей указываем на странице Users. Обязательно указание роли - Admin или Editor, админ может редактировать пользователей и подключения.

Не забываем, что после добавления пользователя он должен пройти процедуру Sign Up на странице авторизации.

Подключения к SQL серверам.

Можно добавлять неограниченное количество подключений. В разделе Connections нажимаем на Add connection, указываем тип сервера (SQL от Misrosoft называется просто SQL Server), заполняем авторизацию, сохраняем настройки.

Создание и выполнение запросов

Запрос можно написать самостоятельно, есть подсказки.

Можно вставить из буфера обмена.

Запрос можно сохранить, указав произвольные теги.

Запросам можно добавлять простые диаграммы.

К сохраненным запросам можно обратиться из списка Queries. Один и тот же запрос можно выполнять на разных серверах.

Если изменить уже сохраненный запрос и не сохранить его изменения, при вызове такого запроса приложение покажет разницу в запросах и спросит, использовать сохраненный вариант или новый.

Установка в Docker

Я устанавливаю/запускаю SQLPad в Docker - сейчас это быстро и удобно. Приведу цитату из Вики:

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.

Docker хорошо работает и на Windows. 

1. Нужно установить Docker Desktop.

Установка относительно проста, делается инсталлятором с Install Docker Desktop on Windows. Единственное, на что хочу обратить внимание - SQLPad лучше работает WSL2 (Windows Subsystem for Linux — слой совместимости для запуска Linux-приложений).

Если чекбокс "Use the WSL 2 based engine" у вас неактивен - потратьте немного времени и последуйте инструкциям Docker Desktop WSL 2 backend и Windows Subsystem for Linux Installation Guide for Windows 10, чтобы запустить у себя эту подсистему, поверьте, усилия себя оправдают.

2. Скачаем образ SQLPad c DockerHub, для этого в командной строке выполним следующее:

docker pull sqlpad/sqlpad

После этого в приложении docker у вас появится доступный для использования образ.

3. Теперь можно вручную запустить контейнер с приложением, как показано на рисунке ниже, но это не удобно, нужно указывать параметры:

Мы воспользуемся приложением docker-compose. Смысл этого приложения в том, что контейнер создается автоматически по специальному описанию из текстового файла docker-compose.yaml. Ну а текстовые файлы мы любим, их можно прочитать и записать в обычном редакторе, версионировать в git. И конечно хранение описания контейнера в тексте приближает нас к концепции - "Всё есть код".

Я привожу пример файла, создающего только SQLPad, однако в этом файле можно описать и другие контейнеры, они все будут запущены одновременно.

Разберу некоторые моменты в этом файле.

container_name: my_sqlpad

указываем произвольное имя контейнера, будет полезно, если вы запускаете одновременно несколько с разными параметрами

image: "sqlpad/sqlpad"

указываем использование  образа SQLPad для создания контейнера

ports:

      - 3000:3000

пробрасываем порт 3000 внутри образа. Если порт 3000 в хосте занят, можно указать другой порт, например 4000:3000 будет означать, что к веб-приложению снаружи мы обращаемся по порту 4000, тогда как в самом контейнере оно будет по прежнему работать на порту 3000

environment:

      - SQLPAD_ADMIN=yuriy.bylinkin@gmail.com

      - SQLPAD_ADMIN_PASSWORD=secret

Чтобы не возиться с заведением первоначального пользователя, укажем нужного пользователя при создании контейнера, я указал свой емейл и свой любимый (нет конечно) пароль

volumes:

      - ./sqlpad_storage:/var/lib/sqlpad

Это самое интересное. Здесь мы указываем, что база данных и настроечные файлы приложения SQLPad будет фактически находиться на хосте - в папке sqlpad_storage, находящейся там же, где и сам файл docker-compose

Последний параметр нам позволяет при пересоздании контейнера docker (например при перезагрузке Windows), подхватить имеющиеся настройки.

Очень удобно, собственно это и позволяет нам использовать это приложение с docker в продуктиве. Я переносил папку на другие компьютеры и на них заново созданный контейнер с SQLPad успешно работал с ней, таким способом я фактически переносил список сохраненных запросов из одного окружения в другое, нужно было только сделать другое соединение с SQL сервером.

Переходим в папку с файлом docker-compose и выполняем команду

docker-compose up -d

В приложении Docker Desktop в разделе Containers/Apps появился наш контейнер

Он расположен в группе git, потому что мой docker-compose файл находится в этой папке, имеет то название и порт, которые мы ему дали.

Теперь просто запускаем в браузере http://localhost:3000/ (или IP-адрес или доменное имя компьютера, на котором подняли контейнер), авторизуемся и начинаем лить слезы счастья.

К статье приложен пример файла docker-compose, однако это обычный текстовый файл, вы можете написать его самостоятельно.

Скачать файлы

Наименование Файл Версия Размер
Файл docker-compose для создания docker-образа SQLPad

.yaml 0,30Kb
0
.yaml 0,30Kb Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. It-developer 20 12.01.21 16:26 Сейчас в теме
А есть вообще конструктор SQL запросов?
2. ardn 217 13.01.21 09:42 Сейчас в теме
3. Ul_developer 21.01.21 06:38 Сейчас в теме
А есть возможность просмотра плана выполнения запроса?
Оставьте свое сообщение

См. также

Запрещаем администратору системы заходить в конфигуратор (внешнее управление сеансами)

DevOps Сервера Конфигурирование 1С v8 Абонемент ($m)

Используем функционал внешнего управления сеансами для запрета входа в конфигуратор рабочей базы пользователя с правом администрирования.

1 стартмани

08.01.2021    1535    ardn    4    

Devops на коленке, или Иногда стоит отказаться от gitsync

DevOps Скрипты автоматизации v8 Россия Абонемент ($m)

В этой публикации описывается опыт выгрузки конфигурации в исходный код, ускорение выгрузки за счет отказа от использования gitsync в пользу своего решения.

1 стартмани

08.12.2020    945    ardn    2    

Интеграция 1С и Active Directory на сервере

Скрипты автоматизации v8 v8::УФ Россия Абонемент ($m)

Получить информацию Active Directory на управляемых формах со стороны сервера, под любым пользователем домена.

1 стартмани

21.12.2019    10028    DrZombi    14    

Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки

Практика программирования Vanessa Automation v8 Абонемент ($m)

Третья часть цикла публикаций, посвященных Vanessa-ADD и автоматизации тестирования. Переходим к практике.

1 стартмани

28.01.2019    21738    Vladimir Litvinenko    43