![](https://habrastorage.org/webt/p4/mo/ph/p4mophuxv5o8if_yij_o9fcydfu.png)
Окно инструментов Services
У IDE на платформе IntelliJ появилось новое окно инструментов: Services. В DataGrip здесь отображены соединения.
![](https://habrastorage.org/webt/vb/oz/ae/vbozaeuf8rpu2e5m2dielbev2ee.png)
Каждый узел дерева, будь то служба, источник данных, соединение, можно открыть в отдельной вкладке: нажмите Show in New Tab на панели инструментов. Или используйте drag-and-drop. Если на соединении горит зеленый кружок, это значит, что оно активно. Закрыть соединение можно из контекстного меню.
Результаты запросов прикреплены к соответствующим соединениям. Если хотите вернуть вид “как раньше”, отключите дерево служб в настройках отображения, нажав на иконку шестеренки.
![](https://habrastorage.org/webt/lv/ng/jh/lvngjhdp1lc2qvzsfpixdfddv9k.png)
Таймер запроса
В окне Services добавили возможность смотреть, сколько времени занимает запрос: часы тикают справа от консоли, из которой он запущен.
Docker
Еще одна служба, которая может появиться в этом окне, — Docker, если вы используете соответствующий плагин.
![](https://habrastorage.org/webt/9c/ka/cj/9ckacjvm0mbv6w6nghkrt3nfkgm.png)
Сочетание клавиш для отображения/скрытия окна Services — Alt/Cmd+8.
Поиск по данным
Ищите данные, даже если не помните, где они хранятся. Выделите источник данных, группу источников или, наоборот, только отдельные таблицы, и нажмите Ctrl/Cmd+Alt+Shift+F. Или выберите Full-text search из контекстного меню.
![](https://habrastorage.org/webt/yg/3b/qi/yg3bqi0xg_3dsglh9sii6cp6oaq.png)
В диалоговом окне введите, что искать. Слева будет список источников данных. В нижней части окна показаны запросы, которые DataGrip выполнит для поиска.
![](https://habrastorage.org/webt/o6/e_/li/o6e_libi9-i1q7hkgtda5e6zda4.png)
Результаты выглядят так:
![](https://habrastorage.org/webt/ug/3d/qf/ug3dqfgpouogqwymmc0odm3fle4.png)
По клику на результат откроется редактор данных, в котором будет применен фильтр, чтобы показать только найденные строчки. Если столбцов слишком много и непонятно, где то, что вы нашли, используйте текстовый поиск: Ctrl/Cmd+F.
![](https://habrastorage.org/webt/w6/l3/jt/w6l3jta8pdsjlxtctwaxbgihd80.png)
Детали:
– В PostgreSQL, MySQL и MariaDB можно искать только по проиндексированным столбцам. Для этого выберите ‘Only columns with full-text search indexes’ в списке ‘Search in’.
В PostgreSQL будет такой запрос:
where col @@ plainto_tsquery('query')
В MySQL и MariaDB такой:
where match(col) against ('query' in natural language mode)
– В Oracle, DataGrip будет использовать индексы context, ctxrule, ctxcat, если они есть.
– В SQL Server, если построены полнотекстовые индексы, DataGrip генерирует запрос с предложением `WHERE CONTAINS(col, N'text')`.
– Поиск ищет в столбцах, для которых не поддерживается LIKE. Например, JSON-столбцы будут предварительно сконвертированы в строку.
– Для Cassandra DataGrip запускает несколько запросов для одной таблицы, потому что оператор OR не поддерживается.
Редактор данных
Быстрое изменение размера страницы
Меняйте размер страницы в редакторе данных, не ходя в настройки.
![](https://habrastorage.org/webt/j4/x7/qh/j4x7qherzqem1clvrkh7a9eavhs.png)
Имена вкладок
Теперь вы сами можете называть вкладки результатов: напишите имя в комментарии перед запросом.
![](https://habrastorage.org/webt/sl/p-/qh/slp-qhxgb3sf-0mcxdyam1qz4cg.png)
Если вам не нравится, что любой предшествующий комментарий становится именем, укажите слово, после которого будет идти строка для заголовка. Это делается в соответствующих настройках.
![](https://habrastorage.org/webt/4a/mw/sf/4amwsf7hdhghtclarclpntam8oe.png)
Проводник базы данных
Быстрый бэкап таблицы
Копировать таблицы при помощи drag-and-drop можно давно, но раньше это не работало, если перетаскивать в ту же схему. Теперь работает! Удобно, если делаете бэкап данных перед важной операцией.
![](https://habrastorage.org/webt/sd/9s/s6/sd9ss6c6qz2kqm7brqlfat3alho.gif)
Быстрое создание группы
Создавайте группы источников данных, перетаскивая один источник на другой. Если нужно переместить источник данных в существующую группу, это тоже делается мышкой. Любителям клавиатуры напоминаем, что для этого есть клавиша F6.
![](https://habrastorage.org/webt/eo/9p/gx/eo9pgxtvby8it6ghbnb1f-wbhzy.gif)
Принудительное обновление
Новое действие Force Refresh подгрузит информацию обо всех объектах базы, предварительно очистив кэш. Может быть полезно, если что-то “залипло” в памяти и вы не видите актуальной картины.
![](https://habrastorage.org/webt/se/2o/py/se2opyxdzgkl3enxpvf83xkpxbo.png)
Активные соединения
С этой версии маленький зеленый кружок на иконке источника данных означает, что соединение с ним активно.
![](https://habrastorage.org/webt/du/0k/1j/du0k1jo8cua24seqth8npauqiqc.png)
Комментарии к таблицам
После включения View | Appearance | Descriptions in Tree Views комментарии к таблицам отобразятся в проводнике.
![](https://habrastorage.org/webt/ew/4z/zs/ew4zzsmsbku5eom_uq9h3kw-oye.png)
Фильтрация по источникам данных
Если у вас много похожих баз данных, было неудобно искать объекты: например, если вы ищете таблицу, а таких таблиц у вас десять, они все показывались в выдаче.
Сейчас можно указывать, где искать: выберите конкретный источник данных или группу источников.
![](https://habrastorage.org/webt/pz/7q/b6/pz7qb6pbzaqtk-msawiyurux8zu.png)
То же работает при поиске кода в Find In Path.
![](https://habrastorage.org/webt/fq/s4/al/fqs4alagemmgavtdxvmh5hbkc5y.png)
Помощь при написании кода
Системные объекты
В базах данных есть системные каталоги — там хранятся метаданные: информация о таблицах, процедурах, встроенных функциях.
Объекты из этих каталогов часто используют в запросах, поэтому их нужно показывать в автодополнении и правильно подсвечивать: IDE не должна думать, что это какие-то неизвестные объекты.
Раньше, чтобы это работало, системные схемы надо было добавлять в проводник, потому что DataGrip ”знал” только о тех объектах, которые проинтроспектированы. Но системные схемы не меняются, получать информацию о них каждый раз не имеет смысла. К тому же, они не всегда нужны в проводнике и мешаются там с рабочими схемами.
Значок молнии напротив схемы означает, что информация о ее объектах всегда есть у DataGrip, даже если вы не добавили ее в проводник.
![](https://habrastorage.org/webt/yg/ls/ig/yglsig7xn7l-yaypiqfvgo9s1q8.png)
Вот примеры некоторых системных схем:
PostgreSQL: pg_catalog, information_schema
SQL Server: INFORMATION_SCHEMA
Oracle: SYS, SYSTEM
MySQL: information_schema
DB2: SYSCAT, SYSFUN, SYSIBM, SYSIBMADM, SYSPROC, SYSPUBLIC, SYSSTAT, SYSTOOLS
Предупреждения и исправления
Теперь из окна предупреждения можно сразу решить проблему, о которой вам сообщили. Например, в окне об опечатке DataGrip предлагают ее исправить, а если IDE предупреждает о том, что нет псевдонима, вам тут же предлагается его завести. Для этого кликните действие слева внизу или нажмите Alt+Shift+Enter.
![](https://habrastorage.org/webt/7o/qe/ty/7oqety3hi0tblsyqobr9zbyua-m.png)
Alt+Enter по-прежнему работает и показывает список всех возможных действий в данном контексте.
Мы также добавили несколько новых инспекций.
Необязательный CASE
Если оператор CASE можно убрать и привести код к более читаемому виду, DataGrip предложит сделать это.
С использованием IF:
![](https://habrastorage.org/webt/es/xs/ok/esxsoktrwfxog3bsaybyq_tdsl4.png)
С использованием COALESCE:
![](https://habrastorage.org/webt/em/9e/it/em9eitsmn5mjngc4dy1ahmghmde.png)
Возможная обрезка строки
IDE предупредит, если записываемое значение строки длиннее предполагаемого.
![](https://habrastorage.org/webt/20/9x/dj/209xdjzlgd0lthqqlj6ez3itbz8.png)
Конвертация GROUP BY в DISTINCT
Теперь вы можете конвертировать GROUP BY в DISTINCT, если все столбцы в предложении SELECT есть и в GROUP BY.
![](https://habrastorage.org/webt/4p/cx/az/4pcxazxtvauhy0rq4pfl52bv_qc.png)
Редактор кода
Новые настройки для передвижения каретки
Мы изменили поведение движения каретки по умолчанию. Теперь DataGrip передвигает каретку к концу текущего слова, если вы прыгаете по словам. Это поведение настраивается в настройках: Editor | General.
![](https://habrastorage.org/webt/r7/sr/v1/r7srv1wa6ghrrvrktimaeivwsri.png)
Обычно это действие выполняется стрелками при нажатом Ctrl дляWindows/Linux и нажатом Opt для MacOS. Поведение по умолчанию в разных операционных системах отличается: теперь в наших IDE это работает “как на Маке”.
Раньше:
![](https://habrastorage.org/webt/k2/wv/rd/k2wvrd2eywot1sytwegzo47uubo.png)
Теперь:
![](https://habrastorage.org/webt/yf/yk/jc/yfykjcxzh3zgardnmnnlbiokyg8.gif)
Выделение запроса
Добавили новое действие: Select current statement. Его можно найти при помощи Find Action (Ctrl/Cmd+Shift+A). Если используете действие часто, назначьте сочетание клавиш.
![](https://habrastorage.org/webt/tq/g1/h3/tqg1h3ggeqtns_c-3tnoe1ioxby.gif)
Сворачивание чисел
Большие числа можно сворачивать при помощи Ctrl/Cmd+Minus.
![](https://habrastorage.org/webt/q8/zh/nc/q8zhnc3s2ceku-pc6nb2nxzcybk.png)
Еще
- DataGrip 2019.2 использует JetBrains Runtime 11, несертифицированный форк OpenJDK 11.
- [Cassandra] Теперь можно редактировать столбцы таких типов: set, list, map, tuple, udt, inet, uuid, timeuuid.
- Новые элементы в списке автодополнения IS NULL и IS NOT NULL. Раньше сравнения с NULL надо было набирать по отдельности.
- Настройка Jump outside closing bracket/quote with Tab включена по умолчанию. По клавише Tab курсор перемещается вовне из блока кавычек и скобок.
- Настройка Surround a selection with a quote or brace включена по умолчанию. Если при выделенном фрагменте кода набрать кавычку или скобку, фрагмент окажется внутри кавычек или скобок.
- Действие Introduce alias (назначить псевдоним) стало частью меню Refactoring.
- Наладили работу с PostgreSQL 12. Больше информации здесь: DBE-8384.
- Добавили логичности в режим только для чтения. Раньше эта настройка включала сразу два режима: на уровне IDE (DataGrip анализирует, какие запросы изменяют данные) и на уровне драйвера (если он реализован). В IDE мы добавили возможность выполнить запрос после предупреждения, если очень надо. Но раньше режим только для чтения все равно блокировал такие запросы на уровне драйвера: DBE-8145. Теперь не блокирует.
Вот и всё!
- Более подробно тут (на англ.)
- Скачать триал на месяц
- Твитер, который мы читаем
- Почта, которую мы читаем: datagrip@jetbrains.com
- Баг-трекер
- Комментарии, которые мы читаем vvv
Команда DataGrip
Комментарии (18)
eandr_67
30.07.2019 19:04Работа с PostgeSQL в PhpStorm 2019.2:
1. При выполнении Dump Data to File(s) -> SQL Inserts с включенной опцией Single File получаю sql-файл в котором создание таблиц и их заполнение производится в алфавитном порядке имён таблиц. При наличии у таблиц внешних ключей использовать полученный дамп для переноса/восстановления данных невозможно.
К моменту создания таблицы, содержащей внешние ключи, все таблицы, на которые эти ключи ссылаются, уже должны быть созданы и заполнены.
2. При экспорте вышеуказанной командой сразу нескольких схем в команды создания таблиц имя схемы не добавляется. При этом в команды INSERT имена схем добавляются. В результате, опять же, использовать полученный дамп невозможно.moscas Автор
30.07.2019 19:20К сожалению, пока всё так. Будем над этим работать, когда займёмся полноценными миграциями.
Единсвтенное, что могу предложить: во втором случае использовать SQL-генератор (Alt+Ctrl/Cmd+G) на схеме. Там можно указать, чтобы всё квалифицировалось.
gudvinr
30.07.2019 20:14Раньше, чтобы это работало, системные схемы надо было добавлять в проводник, потому что DataGrip ”знал” только о тех объектах, которые проинтроспектированы. Но системные схемы не меняются, получать информацию о них каждый раз не имеет смысла. К тому же, они не всегда нужны в проводнике и мешаются там с рабочими схемами.
В постгресе, если база интенсивно использует хранимые процедуры, к примеру, то постгрес генерирует
pg_temp_*
таблицы, и при хранении больших данных (вроде строк — тексты, описания, адреса всякие) таблицы-сателлитыpg_toast_*
, в которых хранит в сжатом виде.
Десятки и сотни таких таблиц, занимающих практически весь листинг браузера схем (что в общем-то, не так уж редко для случаев когда конкретный инстанс — это не тестовая база в докере на локальном ПК) доставляет дискомфорт больший, чем две системные таблицы.
Это всё печально весьма, буквально сегодня сидел, вытыкивая системные схемы из выборки. Задаче, которая этому посвящена, в youtrack уже больше двух лет, по-моему.
moscas Автор
31.07.2019 11:00Про эту проблему знаем, да. youtrack.jetbrains.com/issue/DBE-6445. У тикета 5 голосов, поэтому он не в высоком приоритете. Но мы поглядим, что можно сделать.
gudvinr
31.07.2019 11:38Ну да, в трекере не одна такая проблема.
Я про неё тоже знаю, но в данном случае даже нет никакого обходного костыля, чтобы не так сильно мешало. Просил хотя бы добавить возможность фильтровать схемы в стандартный object filter, две версии назад говорили что можно будет в качестве временного решения добавить и тоже ничего.
kuber
30.07.2019 22:25Поддержка XML в Oracle Database уже появилась?
moscas Автор
31.07.2019 11:01Какого рода? XML давно уже подсвечивается везде.
kuber
31.07.2019 12:04Имеется ввиду когда прямо в SQL запросе формируешь XML. Например,
SELECT XMLELEMENT("Employee", ename) FROM emp;
Datagrip корректно отобразит результат?moscas Автор
31.07.2019 15:57Да, сейчас это работает, если поле редактируемое и его содержимое можно отформатировать. Есть тикет: youtrack.jetbrains.com/issue/DBE-1764
Думаю, хорошим решением будет показывать отформатированное подсвеченное значение в Quick Doc pop-up
Sleuthhound
31.07.2019 06:46А есть сравнительная табличка чем ваш продукт отличается скажем от платной версии DBeaver Enterprise?
moscas Автор
31.07.2019 11:02Таблички такой нет. Но есть место, где описано всё, что мы умеем: www.jetbrains.com/datagrip/features
mr_bag
Добрый день.
Я так и не понял, как скопировать данные из поля в виде sql in list?
(1,2,3,4,5,6)
('one','two','three')
Спасибо.
moscas Автор
Опишите подробней, пожалуйста.