Встречайте DataGrip 2021.3! Это третий релиз в 2021 году, и вот что мы приготовили для вас за последние четыре месяца.
Для просмотра диапазонов ячеек теперь есть режим Aggregate. Он поможет управлять данными, позволит не писать дополнительные запросы и даст вам новые возможности из арсенала Excel и Google Spreadsheets.
Для перехода в режим Aggregate, выберите интересующие вас ячейки, щелкните правой кнопкой мыши и нажмите Show Aggregate View.
Как это работает:
В строке состояния отображается один агрегат: какой именно — сумма, среднее значение, медиана, минимальное/максимальное значение и т. д. — вы можете выбрать сами.
Нажав F4 для любого узла схемы, можно просмотреть его содержимое в табличном виде. К примеру, выбрав все таблицы схемы, вы увидите следующее:
Также в виде таблицы можно отобразить отдельные столбцы:
Используя табличное представление, вы можете показывать/скрывать столбцы, экспортировать данные в различные форматы и выполнять текстовый поиск. Навигация тоже работает:
Теперь, если вы разделите редактор и откроете одну и ту же таблицу, два окна редактора данных будут абсолютно независимыми. Вы можете по-разному фильтровать и сортировать данные внутри и сравнивать результаты. Раньше фильтрация и сортировка были синхронизированы, и это было неудобно.
Вы можете выбрать шрифт для отображения данных: Database | Data views | Use custom font.
Теперь в редакторе можно выбрать сразу несколько значений и перейти к соответствующим данным.
Вы можете указать, какой метод будет использоваться по умолчанию для сортировки таблиц. При выборе сортировки на стороне клиента DataGrip не будет выполнять дополнительные запросы и отсортирует только текущую страницу. Чтобы выбрать сортировку при помощи ORDER BY, перейдите в раздел Database | Data views | Sorting | Sort via ORDER BY.
Шестнадцатиричные данные теперь по умолчанию отображаются в виде UUID. Также вы можете настроить способ отображения бинарных данных в столбце редактора данных.
filter {}
и sort {}
MongoDB При фильтрации данных в коллекциях MongoDB теперь работает автодополнение.
В предыдущей версии появилась возможность создавать источники данных DDL на основе реальных. Мы продолжили развивать это направление, и теперь процесс поддерживается полностью. Вы можете:
Напоминаем, что источник данных DDL — это виртуальный источник данных, схема которого основана на наборе SQL-скриптов. Сохраняя эти скрипты в системе контроля версий, вы по сути сохраняете в ней схему вашей базы данных.
В настройках конфигурации данных появилась новая вкладка DDL mappings, на ней можно соотнести виртуальные источники данных с реальными.
Подробнее о том, как это поможет в работе с VCS, читайте в этой статье.
Чтобы сравнить и синхронизировать источник данных DDL с реальным, откройте контекстное меню для источника DDL, перейдите в раздел DDL Mappings и выберите Apply from... или Dump to....
Результат синхронизации будет четко отображаться справа.
Здесь же указывается, что обозначают различные цвета:
Вкладка Script preview показывает результирующий скрипт. Вы можете запустить его в этом же окне либо открыть в новой консоли. Выполнив скрипт, вы преобразуете базу данных справа (целевую) в идентичную базе данных слева (исходной).
Помимо Script preview, на нижней панели есть еще две вкладки: Object Properties Diff и DDL Diff. В них показана разница между конкретными версиями объекта в исходной и целевой базах данных.
Чтобы сравнить две схемы или два объекта, выделите их и нажмите Ctrl + D.
Важно! Окно сравнения все еще в разработке. У каждой базы данных свои особенности, поэтому некоторые объекты могут отображаться как разные, хотя на самом деле они идентичны. В частности, проблему могут представлять псевдонимы типов или отсутствие свойств по умолчанию. Если вы заметите такие ошибки, сообщите нам в баг-трекере.
Все файловые операции теперь также применимы к источникам данных DDL. Вы можете удалять, копировать и коммитить файлы, связанные с элементами схемы, прямо из проводника базы данных.
Когда включена автоматическая синхронизация, ваши источники данных DDL будут обновляться при изменении соответствующих файлов. Раньше это поведение было стандартным. Теперь при желании можно отключить эту опцию.
Если опция отключена, чтобы обновить источник данных DDL, нужно нажать Refresh.
На панели Default schemas/databases можно указать имена баз данных и схем, которые будут отображаться для источника данных DDL. Скрипты DDL, как правило, не содержат имен, поэтому DataGrip автоматически создаст для баз данных и схем одноразовые названия.
Если при тестировании соединения (Test Connection) в любом поле за исключением User и Password обнаружатся лишние пробелы, DataGrip предупредит вас об этом.
В списке драйверов появился драйвер SQL Server для LocalDB. А значит, вы можете использовать специальный тип источника данных для работы с LocalDB. При этом:
Для Oracle и SQL Server доступна аутентификация Kerberos. Используйте команду kinit, чтобы получить исходный билет для принципала, — впоследствии DataGrip будет применять его при выборе опции Kerberos.
Чтобы DBMS_OUTPUT работал для всех новых сессий по умолчанию, включите соответствующую опцию на вкладке Options.
Если вам нужно особым образом настроить соединение, нажмите кнопку More Options. Вы сможете добавить поля Schema и Role для соединений Snowflake, а также настроить SSH и SSL.
На вкладке Advanced теперь есть продвинутые настройки (Expert options). Здесь можно включить интроспекцию на основе JDBC (обязательно свяжитесь со службой поддержки перед тем, как использовать эту функцию). Также доступны следующие возможности:
Пользователи Oracle жаловались, что DataGrip слишком медленно выполняет интроспекцию в случае большого количества баз данных и схем. Интроспекция — это процесс получения метаданных БД (к ним относятся имена объектов, исходный код и т. д.). Благодаря интроспекции DataGrip может выполнять быструю навигацию и поиск, а также отображать подсказки налету.
Системные каталоги Oracle работают довольно медленно, и интроспекция занимала еще больше времени, если у пользователя не было прав администратора. Мы пробовали оптимизировать запросы на получение метаданных, но столкнулись с ограничениями.
Выяснилось, что для большинства повседневных задач не обязательно загружать исходный код объектов. Зачастую для нормальной работы автодополнения и навигации достаточно знать имена объектов БД. Поэтому мы ввели три уровня интроспекции баз данных Oracle:
Интроспекция на первом уровне самая быстрая, на третьем — самая долгая.
Чтобы изменить уровень интроспекции, воспользуйтесь контекстным меню:
Уровень интроспекции можно настроить для схемы или для целой базы данных. Схемы наследуют уровень интроспекции от своей базы данных, но вы также можете настроить его вручную.
Уровень интроспекции обозначается значком, похожим на пилюлю, рядом с иконкой источника данных. Чем больше наполнена пилюля, тем выше уровень интроспекции. Синий цвет означает, что уровень интроспекции был выбран вручную, а серый цвет — что уровень был унаследован.
Теперь вы можете соотнести связанный сервер из SQL Server или ссылку на базу данных Oracle с любым источником данных.
Когда внешний объект сопоставлен с источником данных, для запросов, содержащих этот объект, будет работать автодополнение.
Раньше в списке схем не было системных схем (pg_toast, pg_temp и др.) и шаблонов баз данных. Мы добавили возможность их отображать: вы найдете соответсвующие настройки на вкладке Schemas.
Теперь в проводнике базы данных, помимо таблиц и представлений, отображаются потоки.
В проводнике базы данных появилась отдельная папка для распределенных таблиц.
One of our users posted about an unfortunate situation: he executed the UPDATE
query on a production database with the condition WHERE id - 3727
(instead of =) and had millions of records updated!
Мы тоже удивились, что такое возможно в MySQL, и разумеется, сразу решили добавить инспекцию, которая проверяет, что в условиях WHERE
и HAVING
содержатся логические выражения.
Если выражение не похоже на логическое, DataGrip подсветит его желтым и покажет предупреждение перед выполнением запроса. Проверка работает для ClickHouse, Couchbase, Db2, H2, Hive/Spark, MySQL/MariaDB, Redshift, SQLite и Vertica. Для других баз данных такие выражения будут подсвечиваться как ошибки.
Теперь из запросов можно извлекать табличные функции. Для этого выделите запрос, откройте меню Refactor и выберите опцию Extract Routine.
JOIN
Появилась встроенная подсказка, показывающая тип связи таблиц, указанных в условии для JOIN
: один к одному, один ко многим или многие ко многим. Выключить эту подсказку можно в разделе Preferences | Editor | Inlay Hints | Join cardinality.
Теперь при использовании getSiblingDB
и getCollection
для имени базы данных и имени коллекции работает автодополнение.
Кроме того, автодополнение доступно для имен полей из коллекции, которая была определена с помощью getCollection
.
По просьбе пользователей мы убрали временные метки из результатов запросов. Если вы хотите, чтобы все отображалось как раньше, измените настройку Database | General | Show timestamp for query output.
Если вы используете окно Services в оконном режиме, по умолчанию оно всегда скрыто за IDE. Мы добавили настройку, которая переводит фокус в окно при каждом запуске запроса, и оно будет появляться сразу после выполнения запроса.
Кроме того, если вам не нравится, что после выполнения долгого запроса в окне Services активируется соответствующая вкладка, отметьте флажком опцию Activate Services output pane for selected query console only.
Мы улучшили импорт CSV-файлов и копирование наборов данных:
При открытии и импорте CSV-файлов DataGrip автоматически обнаружит, что в первой строке содержатся названия столбцов.
Теперь DataGrip определяет типы столбцов в CSV-файлах и позволяет сортировать данные по числовым значениям. Раньше они считывались как текст, и это усложняло сортировку.
Раньше у нас было два похожих понятия: Favorites и Bookmarks. Разница между ними была несущественной, поэтому мы решили оставить только одно — Bookmarks. Мы изменили соответствующую логику и сделали для закладок отдельное окно.
В новом окне Bookmarks можно просмотреть все объекты и файлы, которые вы пометили как важные (нажав F3 на macOS или F11 на Windows/Linux).