Базы через JDBC
Официальный плагин Базы через JDBC добавляет базы, для которых в QueryLane нет встроенного драйвера. Он работает с ними через их JDBC-драйверы, поэтому подключение к Oracle или Snowflake работает в обозревателе, редакторе запросов, просмотре таблиц, импорте, экспорте и задачах так же, как подключение к PostgreSQL.
| База | К чему подключается |
|---|---|
| Oracle | Oracle Database по имени сервиса |
| IBM Db2 | Db2 для Linux, UNIX и Windows |
| Snowflake | Аккаунт и хранилище Snowflake |
| Databricks | SQL-хранилище или кластер с персональным токеном доступа |
| Google BigQuery | Проект с ключом сервисного аккаунта |
| Teradata | Teradata Vantage |
| Apache Hive | HiveServer2 |
| Apache Spark SQL | Thrift-сервер Spark |
| Firebird | Сервер Firebird |
| Trino | Кластеры Trino и Starburst |
| H2 | Файл базы H2 |
| Свой JDBC-драйвер | Любая база, jar-файл JDBC-драйвера которой у вас есть |
Плагину нужен QueryLane 1.4.0 или новее, он запрашивает Доступ к сети, Скачивание компонентов, Запуск программ и Файлы пользователя.
Установка плагина
- Откройте Настройки > Плагины и установите Базы через JDBC. Подробнее в разделе Работа с плагинами.
- Дождитесь, пока статус пройдёт Установка компонентов и Подготовка к работе. Плагин скачивает среду Java, Eclipse Temurin 21, с сайта Adoptium и сверяет её с контрольной суммой, которую публикует Adoptium, поэтому компьютер должен быть в сети. Если сеть работает через прокси, выберите его в Настройки > Обновления > Режим прокси: среда Java и драйверы скачиваются через него.
Если скачать не удалось, страница плагина покажет ошибку и кнопку Подготовить, чтобы попробовать снова. Среда Java и драйверы лежат в папке плагина и удаляются вместе с ним, поэтому устанавливать Java на компьютер не нужно.
Новое подключение
- В Подключения > Источники данных нажмите + (Добавить источник).
- Выберите базу или найдите её в поле Поиск или строка подключения. Базы через JDBC стоят в тех же группах, что и встроенные СУБД, а свой драйвер находится в Другие базы.
- Введите Название подключения и заполните поля базы на вкладке Основное, они перечислены ниже.
- Прочитайте лицензию драйвера по ссылке и включите Принимаю лицензию драйвера.
- Нажмите Тестировать, затем Создать.
При первом подключении QueryLane скачивает драйвер с Maven Central и сверяет его с контрольной суммой, записанной в плагине, поэтому изменённый файл не пройдёт проверку. У каждой базы свой драйвер, и скачивается он только после того, как вы приняли его лицензию, через тот же прокси, что и плагин. Драйверы скачиваются через HTTP-прокси, а если прокси спрашивает пароль, укажите имя и пароль в его адресе. Лицензия Teradata разрешает драйвер только с лицензированной базой Teradata, а для Db2 for z/OS и IBM i нужна ещё лицензия Db2 Connect.
| База | Поля |
|---|---|
| Oracle | Хост, Порт (1521), Имя сервиса, например FREEPDB1, Пользователь, Пароль |
| IBM Db2 | Хост, Порт (50000), База, Пользователь, Пароль |
| Snowflake | Аккаунт, например myorg-myaccount, Хранилище, База, Схема, Роль, Пользователь, Пароль |
| Databricks | Имя сервера, HTTP-путь из параметров подключения SQL-хранилища, Токен доступа, Каталог, Схема |
| Google BigQuery | ID проекта, Набор данных по умолчанию, Ключ сервисного аккаунта: JSON-файл ключа сервисного аккаунта |
| Teradata | Хост, Порт (1025), База по умолчанию, Пользователь, Пароль |
| Apache Hive, Apache Spark SQL | Хост, Порт (10000), База, Пользователь, Пароль |
| Firebird | Хост, Порт (3050), База: путь на сервере или псевдоним, Пользователь, Пароль |
| Trino | Хост, Порт (8080), Каталог, Схема, Пользователь, Пароль |
| H2 | Файл базы, Создать файл, если его нет, Пользователь, Пароль |
У каждой базы на вкладке Дополнительно есть ещё JDBC URL и Свойства драйвера. Если указан URL, он заменяет поля выше, а свойства пишутся по одному key=value в строке, например ssl=true. Oracle, Db2, Teradata, Hive, Spark SQL, Firebird и Trino подключаются и через SSH-туннель.
Пароли, токены и другие секретные поля хранятся в зашифрованном хранилище, как у любого подключения. См. Где хранятся пароли.
Свой драйвер
Свой JDBC-драйвер подключает любую базу, у которой есть JDBC-драйвер:
- Jar драйвера: путь к драйверу или несколько jar-файлов через запятую;
- Класс драйвера, например
com.example.jdbc.Driver; - JDBC URL, например
jdbc:example://host:port/database; - Пользователь, Пароль и Свойства драйвера.
С таким драйвером QueryLane пользуется стандартными метаданными JDBC и стандартным SQL. Обозреватель, запросы, просмотр таблиц и экспорт работают с большинством драйверов, а плана запроса нет.
Что работает
Подключения через JDBC работают как встроенные:
- обозреватель с каталогами, схемами, таблицами и представлениями, свойства объектов с колонками, ключами и DDL;
- редактор запросов с подсказками, результаты таблицей или JSON и остановка выполняемого запроса;
- просмотр таблиц с фильтрами, сортировкой и страницами, правка строк в таблицах с первичным ключом;
- создание, переименование и удаление таблиц, импорт и экспорт;
- SQL-шаги в задачах и схема базы для ассистента и агентов.
План показывает план запроса во всех базах, кроме BigQuery и своего драйвера. В Db2 для плана нужны таблицы EXPLAIN, создайте их один раз командой CALL SYSPROC.SYSINSTALLOBJECTS('EXPLAIN', 'C', NULL, CURRENT SCHEMA).
У некоторых баз есть свои ограничения:
- Hive и Spark SQL меняют строки только в таблицах, которые это умеют, например в таблицах Hive ACID или Delta, и у них нет первичных ключей, по которым можно править строки.
- Trino, Hive и Spark SQL фиксируют каждую команду отдельно, поэтому изменение или импорт, прерванные на середине, сохраняют то, что успели записать до ошибки.
- Firebird не умеет переименовывать таблицы.
Все подключения через JDBC используют один процесс Java. Он запускается с первым подключением и завершается через пять минут после того, как закрылось последнее.
Агенты с доступом только на чтение
При Только чтение в блоке Агенты подключения QueryLane в любой базе отклоняет команды, которые меняют данные или структуру, см. Доступ агентов. Некоторые базы добавляют вторую защиту:
- Oracle, Firebird и Trino выполняют такие запросы в транзакции только для чтения, и запись отклоняет сама база.
- В Db2 транзакции только для чтения нет, поэтому QueryLane выполняет такие запросы в транзакции и всегда её откатывает.
- У Snowflake, Databricks, BigQuery, Teradata, Hive, Spark SQL, H2 и своего драйвера есть только проверка команд. Блок Агенты об этом предупреждает, и настоящей границей там служит логин, который может только читать.