Привет! У нас пора релизов. Это пост о том, что интересного в новой версии DataGrip — нашей IDE для SQL. Эти изменения также касаются IntelliJ IDEA, PyCharm, PhpStorm и RubyMine — тех инструментов от JetBrains, где есть поддержка баз данных.

image

Вот, что мы добавили:



Импорт CSV


Старый способ был неудобный. Мы добавили интерфейс для импорта — теперь выбирайте из контекстного меню источника данных пункт Import from file…, указывайте путь к файлу и вперёд.

Откроется диалоговое окно, в котором есть опции для описания структуры файла — используемый разделитель, кавычки, наличие заголовков и т. д. В правой части укажите типы полей и другие характеристики таблицы, в которую попадут данные. По клавише Delete можно удалять столбцы из скрипта создания этой таблицы. Если при импорте возникнут ошибки, процесс не прекратится, а информация об ошибках запишется в текстовый файл — в нижней части окна укажите, где его создать.



Выбор схем


Схемы, которые вы видите в окне базы данных теперь выбирайте прямо из дерева. Во вкладке Schemas свойств источника данных их больше нет. Помните, что консоль знает только об объектах из этого дерева.



Поддержка языков в строковых литералах


Строковому литералу можно присвоить определённый язык и пользоваться возможностями IDE по работе с ним — подсветкой, автодополнением и другими. Это может быть JSON, XML, регулярные выражения или любой диалект SQL.
Когда DataGrip понимает, что в поле содержатся JSON данные или XML — поддержка осуществляется автоматически.

Скажем, мы вставляем значение в поле типа JSON.



Если вы указываете значение для поля по умолчанию, происходит то же самое — здесь IDE поняла, что вы используете XML, и возможности по работе с этим языком стали доступны. Это переименование элементов, поиск вхождений, движение элементов в стороны и т. д. Не забудьте заглянуть на страницу документации о поддержке XML в наших инструментах.



По умолчанию встроены только два типа, для которых языки поддерживаются автоматически, — JSON и XML. Но если у вас есть тип данных, для которого вы хотите иметь то же самое, то выберите Inject by Type из меню подсказок по Alt+Enter.



В примере используется тип CUSTOMDATA, но, допустим, у нас всегда используется XML для типов, имя которых заканчивается на DATA. Имя типов, для которых будет осуществляться автоматическая поддержка, описывается в регулярном выражении (?i).*DATA. Можно на ходу проверить, соответствует ли шаблону та или иная строка, в данном случае — имя вашего типа.



Шаблоны имен типов для поддержки языков в литералах попадают в Settings/Preferences > Editor > Language Injections.



Проверить строку на соответствие регулярному выражению можно теперь где угодно. По Alt+Enter укажите соответствующий язык, а потом опять по Alt+Enter выберите Check Regexp.



Ещё один способ сообщить среде о языке в строковом литерале — комментарий вида language=%name%. В следующем примере применён динамический SQL — внутри строки заработало автодополнение и навигация: среда поняла, какие объекты используются в запросе внутри строки.



Табличный редактор


Для значений внутри таблицы мы добавили дополнение по значениям в поле, которое вызывается по Ctrl(Cmd)+Space. Это напоминает уже существующий тип дополнения, который вызывается по Alt+/, — оно ищет по всем используемым словам во всех открытых файлах.



Специфические улучшения для PostgreSQL: можно редактировать поля с типами range.



И поля с временными зонами.



Размер столбцов теперь меняется по Ctrl(Cmd)+Shift+Left/Right. Все столбцы выделяйте по Shift+Space, как в Excel.



Консоль


Как и все другие среды разработки на платформе IntelliJ, мы теперь поддерживаем лигатуры. Для этого их должен поддерживать и сам шрифт, который вы установите. Это могут быть FiraCode, Hasklig, Monoid или PragmataPro.



Получается вот что:



Милая фича для тех, кто использует несколько языков, то есть для нас с вами: автодополнение поможет, если забыли переключить раскладку.



В меню Surround with (Ctrl/Cmd+Alt+T) появился пункт Surround with function — выбранные выражения возьмутся в скобки, а курсор будет помещен перед первой скобкой. Раньше эта штука не работала с мультикурсорами, теперь все нормально.



Для PostgreSQL мы поддержали search path — добавляйте и удаляйте схемы из меню в верхней части консоли.



Подключение


В окне подключения теперь работает дополнение имен в полях сервера, экземпляра и базы данных.



В прошлый раз было много комментариев о проблемах с подключением к SQL Server. Мы написали небольшое руководство по решению основных проблем с этим.

Перекомпиляция пакетов в Oracle


Соответствующий пункт добавлен в контекстном меню, причем перекомпилировать можно только те пакеты, которые в этом нуждаются. Для этого выберите Invalid objects only.



Экспорт схемы


Теперь можно экспортировать сразу всю схему или выбранные таблицы. Мы начали работу по интеграции DataGrip с внешними инструментами pg_dump и mysqldump, так что пишите пожелания в комментариях!



Изображения как фон IDE


В меню Find Action (Ctrl(Cmd)+Shift+A) найдите Set Background Image или выберите соответствующий пункт контекстного меню файла с изображением. Затем настройте прозрачность и другие параметры фона. Это появилось во всех IDE на платформе IntelliJ.



Если хотите узнать больше, добро пожаловать на страницу What’s new, и не забудьте заглянуть в Features, вдруг чего-то не знали?

Будем рады, если вы попробуете DataGrip 2016.2 и расскажете о впечатлениях, пока мы готовим первое небольшое обновление.

Команда DataGrip.
Поделиться с друзьями
-->

Комментарии (30)


  1. oxidmod
    21.07.2016 18:18
    +16

    фон конечно киллер-фича


    1. TheKnight
      21.07.2016 20:53
      +1

      В некоторых ситуациях — киллер-фича. Все зависит от человека. Некоторым приятнее, когда есть возможность вот так настроить. Или же задать прозрачность редактора.


    1. zorro1211
      22.07.2016 02:27

      На самом деле очень удобно для глаз ставить паттерны в фон, например пергамент + простая подсветка и будет казаться что читаешь книгу



  1. BanderasPRO
    22.07.2016 07:09

    В PostgreSQL хранимые процедуры можно писать на нескольких встроенных языках (pgSQL, С, Tcl, Perl, Python), а так же подключить другие PL (procedural language), в том числе и JS (PL/v8). Как подсказать IDE использовать определённый язык в хранимой процедуре и пользоваться возможностями IDE по работе с ним — подсветкой, автодополнением и другими?


    1. moscas
      22.07.2016 11:35

      Если у вас DataGrip (а не IntelliJ IDEA, например), то пока никак, если вы не пользуетесь сторонними плагинами для поддержки языков. У нас есть в планах встроить в DataGrip поддержку python.


  1. Borz
    22.07.2016 14:00

    Скажите, а планируется перенос цветовой схемы "Vibrantink" в IDEA?


  1. evgenybuckharev
    22.07.2016 14:34

    Очень не хватает функционала по бекапу баз в пару кликов, как это сделано к примеру в Navicat, с выгрузкой в файл по нужде.
    Только из за этого не перехожу на Ваш продукт.
    А за переход от ключа на строку в связанной таблице вот это настоящая киллер-фича) Такого не встречал ещё в подобных программах…


    1. moscas
      22.07.2016 19:24

      У вас какая DBMS?
      Я писал в тексте, что работаем над интгерацией с mysqldump и pg_dump.


      1. evgenybuckharev
        22.07.2016 19:26

        Mysql


      1. evgenybuckharev
        22.07.2016 19:27

        Ещё отдельное спасибо за поиск, по таблице, куда удобнее вручную написать часть запроса для фильтрации, чем клацать по фильтрам как это сделано у Navicat


  1. sandrain
    22.07.2016 14:59

    Для меня лично почти идеальная программа для работы с базами, кроме:

    — Удобного экспорта таблиц(сейчас странно как-то экспортирует, отдельными инсертами и без структуры.)
    — Часто вываливается ошибка о том что подключение к БД отвалилось и приходится выполнять запрос дважды
    — Не хватает функционала синхронизации колонок для таблиц между сессиями (например сравнение и синхронизация между локальной и боевой таблицой)
    — Не хватает поддержки монги


    1. Borz
      22.07.2016 16:11

      "Удобного экспорта таблиц" — структуру можно добавить через "Data Extractor".
      "Часто вываливается ошибка о том..." — в этой версии уже исправили
      а сравнение колонок — вы про это?


      1. rauch
        22.07.2016 16:20

        > «Часто вываливается ошибка о том...» — в этой версии уже исправили

        не очень понятно что конкретно исправили — в описуемом случае(по вашей ссылке) — после ночи бездействия В ЛЮБОМ СЛУЧАЕ приходтся выделять все датасорсы и стопать их, чтобы при следующем выполнении любого SQL они не отваивались


        1. Borz
          22.07.2016 16:27

          частично исправили — я там даже коммент оставлял на эту тему


          1. moscas
            23.07.2016 15:54

            задал там вам вопрос :)


    1. moscas
      23.07.2016 15:53

      — Мы сейчас работаем над улучшением экспорта. Но DDL вставить можно и сейчас — выберите Add Table Definition в меню экстрактора в верхней панели консоли (слева от View Query)
      — Ниже уе упоминали, что мы починили в 2016.2 и тот факт, что Borz должен опять дёргатть датасорсы руками — это не нормально, так что попробуйте пожалуйста у себя тоже.
      — Это интересно, спасибо.
      — До этого далеко.


  1. rauch
    22.07.2016 16:03

    Чуваки, расскажите, как решить следующий юзкейз:

    — работодатель купил лицензию, скалачи, установили
    — выходят обновления регулярно, все обновляются
    — и вот уже в Help->About значится, что ты EAP юзер и скоро конец твоей пробной версии

    ВОПРОС: как найти ссылку на самую свежую версию 0xDBE, которую можно скачать с моей купленной лицензией и использовать до скончания веков?


    1. moscas
      22.07.2016 19:27

      Самая свежая версия — https://www.jetbrains.com/datagrip/download/
      Если у вас обновлялись на ЕАПЫ, то это сделано намеренно теми, кто пользовался IDE.
      До скончания веков вам доступна версия, которая существовала на момент подписки.


      1. rauch
        22.07.2016 19:40

        > «До скончания веков вам доступна версия, которая существовала на момент подписки.»

        вы не ответили на вопрос!
        Я купил лицензию! В ней есть баги? да! Джет Брейнз выпускают фиксы? Да!

        Дайте мне линк на самый свежий билд, который я могу скачать по своему реситу. Не надо мне давать одну ссылку(https://www.jetbrains.com/datagrip/download/) на самую свежую версию, которая не оплачена моим реситом, вы это сылшите? слышите?


        1. moscas
          22.07.2016 19:43

          Минорные апдейты, конечно, включены в обладание вечной версией :)
          Старые версии есть здесь, выбирайте: https://confluence.jetbrains.com/display/DBE/DataGrip+previous+releases


          1. rauch
            22.07.2016 19:51

            Спасибо! сделал букмарк


        1. moscas
          22.07.2016 19:44

          Но вообще, если у вас годовая подлписка, то 2016.2 для вас бесплатная.


          1. rauch
            22.07.2016 19:46

            а мне показывает, что я EAP юзер и скоро конец(~10 августа или что-то около того), что очень неприятно, когда знаешь, что примрно в эти даты будешь делать релиз, нужен будет доступ к продакшн БД, а тут такая подстава


            1. moscas
              22.07.2016 19:56
              +1

              Это значит, что вы на ЕАПе, скачайте 2016.2 релиз и всё будет работать без назойливых напоминалок (ключ надо будет заново ввести).


  1. barbiedrummer
    23.07.2016 18:29

    Использую DataGrip с того момента, как начал разрабатывать в PostgreSQL (перешёл с Oracle). До этого использовал PL/SQL Developer.
    Переход дался с болью, но уже как-то привык и к продукту, и к БД. Хоткеи, гибкий поиск, автокомплит — тут без вопросов, всё хорошо.

    Есть несколько вопросов.
    1. Хочется иметь другой набор настроек форматирования кода.
    Пример:

    С моей точки зрения, встроенный в PL/SQL Beautifier предоставляет возможность изменить «правильные» аспекты при оформлении SQL кода. Планируется ли какая-то работа по расширению настроек форматирования?

    2. Не понимаю, возможно ли запустить в DataGrip конструкцию вида:

    Получаю ошибку:

    В pgAdmin такая возможность есть, плюс она описана в документации PostgreSQL.


    1. moscas
      23.07.2016 18:30

      Вид конструкции потерялся :)


      1. barbiedrummer
        25.07.2016 12:20

        Пример:


        Конструкция вида:

        Ошибка:


        1. barbiedrummer
          25.07.2016 12:21

          Что-то опять всё напуталось. Тяжёлые выходные.

          Пример с ошибкой местами поменять надо.


    1. moscas
      25.07.2016 15:07

      1. О форматировании думаем, можно приходить сюда и писать свои мысли: https://youtrack.jetbrains.com/issue/DBE-1922
      2. Auto-commit теряет курсор после селекта, попробуйте его выключить.


      1. barbiedrummer
        25.07.2016 16:13

        1. Ок, обязательно напишу.
        2. Не помогает, ошибка та же самая.