company_banner

Релиз DataGrip 2016.3

    Привет! Этот пост о том, что нового в DataGrip 2016.3. Напомню, что описанное справедливо и для других IDE на платформе IntelliJ с поддержкой баз данных: PHPStorm, PyCharm, RubyMine и, конечно, IntelliJ IDEA. Кроме одной маленькой возможности, о чём отмечу отдельно.

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

    Итак, DataGrip 2016.3!



    Хранилище исходников


    Использования таблицы или представления ищутся не только в исходном коде, но и внутри других объектов базы данных: функциях, процедурах и других представлениях.

    Это работает так: DataGrip выгружает исходники объектов в хранилище, куда и обращается при надобности. По умолчанию загружаются коды из всех схем, кроме системных. Настроить это можно в свойствах источника данных, вкладка Options.

    Для включения хранилища запустите Forget Schemas из контекстного меню, а потом обновите источник данных — нажмите на Synchronize в панели инструментов.


    Пробуем: как всегда, Alt+F7 найдёт использования текущего объекта в скриптах. А теперь и внутри других объектов. Справа видно, в каком месте кода нашлось вхождение.


    Как я уже написал, мы загружаем исходники триггеров для популярных СУБД: MySQL, PostgreSQL, SQL Server, Oracle и Sybase. А для PostgreSQL ещё и исходники правил. Теперь можно удалить триггер из контекстного меню.


    Починили баги с исходными кодами представлений — теперь они показываются верно во всех местах. Для каждого объекта, исходники которого мы записали в хранилище, доступно Open DDL In Console в контекстном меню.


    Не забыли и о материализованных представлениях в PostgreSQL. Загружайте исходные коды, обновляйте данные в них из контекстного меню.


    Когда вы редактируете исходные коды объектов из хранилища, DataGrip отслеживает изменения и подсвечивает их на лету в боковой панели.

    Важно понимать, что редактор процедур, функций и представлений показывает локальную версию исходного кода, которая хранится у вас всегда, даже если вы перезапустите IDE. Проще говоря, если вы напишите и выполните здесь запросы, не относящиеся к объекту, они всё равно сохранятся и будут отображаться каждый раз, когда вы редактируете объект. Так что лучше ничего лишнего здесь не запускать :)


    А если таких изменений много, и они все ещё не отправлены в базу, то их список ищите в Tools → DataBase changes. Внимание! Этого окна в других наших IDE нет, только в DataGrip.


    Инструмент сравнения поможет узнать, что поменялось для каждого из объектов.


    Комментарии при создании процедур сохраняются в базе.


    Редактор данных


    Редактор данных постепенно превращается в мощный инструмент: умеет то, чего обычно от него в IDE для баз данных не ждут.

    Главное нововведение в этой версии — отложенное редактирование: ваши изменения хранятся локально и подсвечиваются, пока вы не отправите их в базу по Ctrl+Enter (Cmd+Enter для OSX). Пока изменения не отправлены, их можно откатить: Ctrl+Z (Cmd+Z для OSX) отменит только те изменения, которые выделены. Соответственно, прежде, чем отменить всё, нажмите Ctrl+A (Cmd+A для OSX) .


    Редактируйте несколько ячеек одновременно. Конечно, это работает, если они все одного типа и не имеют ограничений по уникальности.


    Кроме того, мы добавили конвертацию — теперь данные можно копировать из ячеек одного типа в другой. А с учётом предыдущего, копировать колонками: даты в строки, логические значения в числа и так далее. Это сработает, даже если исходная таблица и таблица назначения находятся в базах от разных СУБД.


    И небольшие изменения: в редакторе данных, теперь, как и в тексте, работает Выделить следующее появление по Alt+J (Ctrl+G для OSX). Можно выделять несколько полей сразу.


    Ещё одна знакомая вещь из текстового редактора — так называемое «умное» выделение по Ctrl+W (Alt+Up для OSX) — в редакторе данных работает так: сначала выделяется активная колонка, потом активная строчка, потом всё.


    Поддержка SQL-кода


    Автодополнение предложения INSERT предлагает в том числе вариант только с полями, у которых нет значения по умолчанию.


    Если параметр или переменная не используются, вам сообщат.


    Также вас предупредят, если количество колонок при сочетании результатов запросов не совпадает.


    Автодополнение для JOIN USING, основанное на поиске колонок с одинаковыми именами, теперь работает для PostgreSQL.


    Поиск использования параметров по Alt+F7 в PostgreSQL понимает ссылки типа $n.


    Навигация по методам, знакомая по другим нашим IDE, у нас стала навигацией по запросам. Сочетания клавиш: Alt+Up и Alt+Down (Ctrl+Down и Ctrl+Up для OSX).


    Интеграция с mysqldump и pg_dump



    Для параметров работает дополнение по Ctrl+Space.


    Разное


    Ещё когда DataGrip назывался 0xDBE у нас был XML-экстрактор данных — любой набор данных экспортировался в XML. Мы его убрали, но многие просили вернуть обратно: вернули.


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


    Ускорили запуск больших скриптов из контекстного меню — теперь мы отправляем запросы в базу не по одному, а пакетами.


    Ну и напоследок. Многие, наверное, заметили: у нас новые иконки!


    А также:

    • Поддержка грамматик SQL Server 2016 и PostgreSQL 9.6
    • Автоматическое определение, устарел ли драйвер
    • Добавили Drop в контекстное меню многих объектов
    • Шрифт FiraCode с лигатурами идёт из коробки
    • Поддержка Auto-inc для таблиц в SQLite
    • Поддержка Expression index в SQLite

    Если понравилось, а вы ещё не пробовали DataGrip, скачайте бесплатную пробную версию и пишите нам здесь, в комментариях, что вы думаете. Ещё мы ведём и читаем твиттер, а об ошибках лучше сразу сообщать в треккер.

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

    Спасибо!
    Команда DataGrip
    _
    JetBrains
    The Drive to Develop
    JetBrains 132,92
    Компания
    Поделиться публикацией
    Комментарии 80
    • 0

      Опять же, не злорадства ради, до сих пор нельзя sequence'ы по delete удалять, таблицы можно, причем каскадно, а ключи приходится через консоль и drop sequence: https://youtrack.jetbrains.com/issue/DBE-2750

      • 0

        Обратил внимание на упоминание об этом в статье: "Добавили Drop в контекстное меню многих объектов". Полез проверить еще раз и действительно — уже можно, значит этот тикет можно закрыть.

        • 0
          Да, мы добавили, просто баг не закрыли =) Закроем.
      • +5
        Когда новый бесплатный EAP выйдет, для нищебродов?)
        • +1
          Новый бесплатный EAP выйдет в январе.
          • +1
            Вышел: https://blog.jetbrains.com/datagrip/2017/01/19/datagrip-2017-1-eap/
          • +1
            Етсть ли в планах созданиe schema designer'a?
            • +1
              Таких планов пока нет.
            • 0
              Мне вот всёравно неудобно использовать Database Manager в PHPStorm'е и приходится запускать HeidiSQL из под wine :(
              @JetBrains посмотрите пожалуйста на HeidiSQL и сделайте такую же удобную Database Manager…
              • +3
                Мы же не можем и просто взять и копировать другие инструменты. У нас есть представление о том, как удобно, и как нет. Зачастую наша задача сделать удобно, потому что как раз у других неудобно :) Поэтому было бы круто, если бы вы написали, что вам так удобно в HeidiSQL, и мы с вами это обсудим.
                • 0
                  Разрешите я выскажусь. Лично мне в PHPStorm не удобно (для mysql):
                  1) нельзя создать базу, можно только открыть уже созданную
                  2) нельзя сделать дамп базы с данными
                  3) когда добавляешь новую запись, то для того чтобы она применилась нужно создать новую строку, потому удалить ее. Видимо нужна какая-то кнопка «apply»
                  4) Не исполняются много запросов за один раз.

                  И добавьте, пожалуйста, поддержку MongoDB. Очень не хватает.
                  Спасибо.
                  • +4
                    1) Из UI нельзя, только скриптом CREATE DATASBE — это действительно так неудобно?
                    2) На PostgreSQL и MySQL можно.
                    3) По Ctrl+Enter происходит отправка данных в базу. Вы точно пробовали 2016.3?
                    4) Приведите пример, пожалуйста. Потому что, вообще, исполняются.
                    5) Монги пока нет в ближайших планах.
                    • 0
                      1) Не критично, но хорошо было бы.
                      2) Как это сделать? Не нашел такой строчки.
                      3) Спасибо, помогло.

                      Записал видео проблемы 4 и 2 пунктов.
                      https://cloud.mail.ru/public/AEEa/C5t5yrAsT

                      • +1
                        2) Из контексного меню. Есть подозрение, судя по ваемшу видео, что это не 2016.3. Или всё-таки, последняя версия? :)
                        4) Ctrl+A → Ctrl+Enter запускает всё?
                      • 0

                        4) насколько я понял, имеется в виду этот баг

                        • 0
                          А по поводу третьего пункта. Мне кажется, или в GUI кнопки с аналогичным поведением нет?
                          • +1
                            Нет. Но скоро появится :)
                  • 0
                    Визард по созданию БД где-то есть? )
                    Пользуюсь ems много лет. у datagrip много крутых фишек, но каких-то самых используемых визардов не найти (
                    • +2
                      Я вам честно скажу, мы вообще скептически относимся к идее визардов — вроде, продукт для разрабочтиков и мы ожидаем от них использования SQL. Но я согласен, что во многих случаях это просто убыстряет работу, вероятно этот — один из них.
                      • 0
                        Ну это просто удобно )
                        Спасибо за фидбек )
                        • 0
                          Создание базы точно один из них. Синтаксис в диалектах отличается сильно, легко забыть какую-то опцию типа кодировки и очень часто изменить толком нельзя уже, когда обнаруживаешь (часто далеко не сразу) что что-то забыл, только дропнуть с уже созданными схемами, таблицами, данными, может даже реальными, и создавать новую.
                          • +1
                            Как решение, здесь можно предложить Live Templates → вы создадите шаблон один раз, а затем просто нажатием пары клавиши будете его вызывать со всеми плейсхолдерами для имени базы/схемы и.т.д.

                            Settings → Editor → Live templates
                      • +2

                        Нравятся ваши продукты, особенно DG, как всегда есть нюанс — синхронизация огромных схем.


                        Работаю с базой, в одной схеме которой есть 50к+объектов: 6к таблиц, 12к представлений, 25к пакетов и остального понемножку. Полная синхронизация почти всегда заканчивается с одним результатом — DG зависнет на Applying Changes.


                        Но это полбеды, если начать синхронизироваться с другой схемой внутри одного подключения (к примеру SYS), то после завершения Intoinspector примется за полную синхронизацию той огромной

                        • +1
                          У вас одинаково медленно и в 2016.2 и в 2016.3?
                          • 0

                            Мне трудно судить по скорости работы, потому как сейчас работаю только с двумя базами, у одной простая структура, там изначально проблем не было, а вторая — эта вот эта:
                            image


                            С ней трудно вести подсчеты по времени, полная синхронизация этой схемы прошла только один раз: на Win 10, 2016.3 (x64), Oracle JDK 8u111.


                            Вчера ночью запустил на Ubuntu 16.04, 2016.03, утром все еще выполнялся Applying Changes, после завершении работы "интраинспектора" интерфейс DG повис

                            • +1
                              Мать моя… Это что? (если не секрет)
                              Или это мультитенантная система?
                              • +2
                                Да, неплохо :) В вашем случае, вероятно стоит отключить загрузку исходников в хранилище. Делается это здесь: image
                                Напиши пожалуйста, помогло ли.
                                • +1

                                  Поигравшись с настройками:
                                  Load Sources --> None
                                  Auto Sync --> Снял чекбокс (почему сразу я не отключил — непонятно)


                                  Запустил обновляться схему и… опять все повисло на этапе Applying Changes, полез в логи и обратил внимание, что раз в 5 секунд создаются файлы threadDump (пример)


                                  В принципе рабочий workround уже для меня был:


                                  • запустить синхронизацию
                                  • остановить ее после индексов
                                    Так как данная база — это коробочный продукт (АБС банка), в котором структура не так часто меняется, то меня вполне устроят подсказки по полям таблиц/представлений.

                                  Однако интерес заставил поэкспериментировать, а именно поиграться с JDK. Поменял на версию от Oracle и о чудо — синхронизация завершилась. Решил продолжить:


                                  1. Снес подключение (для чистоты эксперимента)
                                  2. Создал новое подключение
                                  3. Настроил Load Sources / Auto Sync
                                  4. Добавил две схемы
                                  5. Нажал синхронизировать и ушел по делам

                                  по возвращении в Event Log нашел следующую запись:


                                  27.11.16 14:13  @TEST: Synchronization successful (25m 47s)

                                  Информация о DG и JDK

                                  Oracle JDK:
                                  DataGrip 2016.3
                                  Build #DB-163.7744.4, built on November 18, 2016
                                  JRE: 1.8.0_112-b15 amd64
                                  JVM: Java HotSpot(TM) 64-Bit Server VM by Oracle Corporation


                                  Bundled openJDK
                                  DataGrip 2016.3
                                  Build #DB-163.7744.4, built on November 18, 2016
                                  JRE: 1.8.0_112-release-408-b2 amd64
                                  JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

                                  • 0
                                    Огромное спасибо за подробный ответ. Мы проведём расследвоание по итогам вашего сообщения :)
                                    Если у вас будут ещё вопросы или проблемы, моежете писать мне прямо на почту maxim.sobolevskiy[at]jetbrains.com
                          • +1
                            Прочитал статью и оплатил. Животворящая сила гифок и подробностей о функционале.
                            • +2
                              Спасибо! Пишите нам, если будут вопросы.
                            • 0
                              Мда. Эта штука не понимает, что типы можно создавать в схемах (хотя, конечно, низкий поклон, что вообще такую сущность еще не забыли). Эта штука как-то очень специфично работает с перегружаемыми процедурами, как бог на душу положит синхронизирует состояние с базами, она вообще не понимает, что под пользователем может быть доступно несколько баз. И это только на вскидку.
                              • +1
                                У вас PostgreSQL? Можно вас попросить немного подробней описать каждую из претензий? Можно по-разному трактовать «не понимает» и «специфично работает».
                              • 0
                                А поддержка Database diagrams (MSSQL) планируется?
                                ref https://www.mssqltips.com/sqlservertip/1816/getting-started-with-sql-server-database-diagrams/
                                • +1
                                  Диаграммы есть: https://www.jetbrains.com/datagrip/features/other.html
                                • 0

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

                                  • 0
                                    Copy DDL из контекстного меню базы.
                                  • +1
                                    Я так понимаю, в шторме оно же используется? Мой лист претензий (основная база PostgreSQL):
                                    • Нельзя выбрать коннект «по умолчанию» — вообще логика какая-то странная, по которой он выбирается;
                                    • Очень плохой интерфейс для внешних ключей — строчки запрятаны в отдельную закладку, отображаются текстом, сам интерфейс просмотра структуры неудобный — например очень сложно найти, поле nullable или там unique; SQL скрипт структуры не показывается;
                                    • Редактор хранимок в виде редактирования DDL — отвратителен. GUI должен облегчать исправление запроса. То что есть здесь — так, чуть расширенная версия psql.
                                    • Права доступа ни назначить, ни посмотреть, аналогично с владельцем объекта;
                                    • Объекты в базе не создаются, кроме таблиц — хранимку там, представление, последовательность, роль, схему — все это недоступно. Про создание новых баз — сказали выше. Если клиенту предлагается использовать DDL базы, то зачем вообще такой продукт?


                                    Резюме — что-то небольшое поправить в данных или посмотреть — можно. Чуть задача пообъемнее, или лень на каждый чих лезть в мануал по DDL — то открываем pgAdmin III. Продукт пока уровнем чуть выше (местами) текстовой консоли psql. Местами кстати (встроенный help и сервисные функции) — ниже.
                                    • 0
                                      Спасибо за фидбек!

                                      Я не буду отвечать вам по пунктам — все ваши претензии обснованы. Единственное, что непонятно: про редактирвоание процедур «GUI должен облегчать исполнение запроса.». В любом GUI есть элемент «тело функции», в которой и находится сам запрос, как GUI должен помогать его исправлять?
                                      Что касается возможностей по администрированию, мы знаем, что у нас сейчас их почти нет — надеемся заняться этим в будущем. Про GUI писал выше — отчасти здесь проблему решают Live Templates. Но мы обсуждаем возможность его создания для создания базовых объектов. Кстати, когда создаёте объекты, пробуйте в консоли Ctrl+N (Cmd+O на Маке) → IDE поможет вам сгенерировать простой код для начала.

                                      Вы спрашиваете, зачем вообще такой продукт? У нас уже есть много возможностей, которых нет у многих других инструментов. Редактор данных умеет много, IDE позвоялет генерировать предложения INSERT, UPDATE, а самое главное — делает синтаксический анализ вашего кода и поэтому предлагает исправления и быстрое автодополнение. В этом посте, опять же, написано про то, что DataGrip (и все остальные наши IDE) научился искать вхождения внутри объектов. То есть он в первую очередь для того, кому эти фичи помогают в ежедневной работе. Сейчас это скорее SQL-программист, чем администратор БД. Но мы постараемся сделать так, чтобы продукт стал незаменинмым для всех.
                                    • 0
                                      Можно ли настроить форматирование так, как у выражения MetallMass, а то Mass не читабельно:
                                               SELECT
                                               ISNULL(-gdol.Mass, ISNULL(gdl.Mass, ISNULL(g1.Mass, ISNULL(sc.Mass, ISNULL(CASE WHEN pol.Operation = 0
                                                 THEN -gpol.Mass
                                                                                                                          ELSE 0 END, 0))))) AS Mass,
                                               ISNULL(-gdol.MetallMass,
                                                      ISNULL(gdl.MetallMass,
                                                             ISNULL(g1.MetallMass,
                                                                    ISNULL(sc.MetallMass,
                                                                           ISNULL(CASE WHEN pol.Operation = 0
                                                                                  THEN -gpol.MetallMass ELSE 0 END,
                                                                                  0)
                                                                    )
                                                             )
                                                      )
                                               ) AS MetallMass,
                                               FROM ...
                                      
                                      • 0

                                        ставьте вручную переносы строк — форматирование будет относительно них сделано

                                        • +1

                                          А не хотите попробовать "засахарить" с помощью COALESCE


                                          SELECT
                                              COALESCE(-gdol.Mass, gdl.Mass, g1.Mass, sc.Mass, CASE WHEN pol.Operation = 0 THEN -gpol.Mass END, 0)
                                            , COALESCE(-gdol.MetallMass, gdl.MetallMass, g1.MetallMass, sc.MetallMass, CASE WHEN pol.Operation = 0 THEN -gpol.MetallMass END, 0)
                                          FROM ...
                                          • 0
                                            Можно… В данном запросе, пожалуй, это не вызовет никаких накладок. А так я не очень люблю использовать COALESCE из-за двойного вычисления — где то забудешь и попадешь на неоптимальный план запроса…
                                          • 0
                                            Вам нужно пойти в Настройки и поставть Wrap Always на Call Expressionimage
                                          • 0
                                            Добрый день!
                                            Решил опробовать данный инструмент, и сразу воткнулся в проблему соединения с базой по ssh.

                                            В поддержке нашел вот такой топик.

                                            Скажите, есть ли какой-то туториал по этому поводу?
                                            Спасибо!



                                            • 0

                                              у вас шлюз (proxy host) по ssh доступен по порту 2345 вместо 22?


                                              ЗЫ: доступ на сервер через root-пользователя это сильно.

                                              • 0
                                                Да, для доступа по ssh используется 2345 вместо 22.
                                                В данном случае, я пытался под разными пользователями попасть, и в скрин попал root :)
                                                • 0

                                                  а из консоли по SSH пускает на сервер с этим логин/паролем и по этому порту на этом же компе?

                                                  • 0
                                                    Да, всё работает из терминала.
                                                    Спасибо, за глубокую диагностику проблемы :)
                                              • 0

                                                если коротко:
                                                на закладке "General" вы даёте настройки так, будто вы находитесь на сервере bastion. А на закладке "SSH/SSL" указываете настройки для входа по SSH на сервер bastion.
                                                туннельный локальный порт DataGrip сам сгенерит случайный

                                                • 0
                                                  Совершенно верно, именно так всё и настроено.
                                                  По такому принципу у меня Toad работает.

                                                  В данном случае, сообщение об ошибке у меня исчезло и DataGrip начал работать по ssh, после перезапуска компьютера.
                                                  Возможно, где-то у меня в системе было что-то не так.

                                                  Как usercase:
                                                  1) Установил DataGrip
                                                  2) Настроил ssh-тонель, получил ошибку
                                                  3) Перезапустил систему
                                                  4) Соединение по ssh-тоннелю заработало
                                              • 0
                                                Выбивает ошибку, в случае если в именовании объекта присутствует #. У нас, к сожалению, таких объектов в базе валом. DbForge автоматом оборачивает имена объектов в гравис (`t#table_name`), а затем исполняет запрос. Можно ли это как-то настроить?
                                                Не нашел, но было бы круто — распределение объектов по подпапкам, сейчас у нас решается костылями на уровне именования.
                                              • +1
                                                Очень красивый интерфейс! Цвет, иконки, формы.
                                                • 0
                                                  Передал дизайнерам! Спасибо.
                                                • 0
                                                  Возможно это все уже озвучивалось, но для полноценной работы с Oracle не хватает управления грантами для таблиц/view/sequence/…, работы с partitions, управления юзерами, работы с check constraint-ами (сейчас они лишь отображаются в tree-view, но дропнуть, или изменить не понятно как), flashback-а и т. д… При всех достоинствах и преимуществах DataGrip пока приходится держать запущенный Oracle SQL Developer параллельно с DataGrip.
                                                  • 0
                                                    Спасибо! Всё справедливо, будем добиваться того, чтобы у вас была открыта всего одна программа. Наша :)
                                                  • 0
                                                    Подскажите, а где можно найти изменение collation для таблиц и столбцов?
                                                    • 0
                                                      В смысле, как его менять из UI?
                                                    • 0

                                                      Доброго времени суток, очень приятно IDE часто улучшается но в этот раз в списке таблиц и sequence secuance расположена высшее чем остальные по сути список sequence не часто надо хотел предложить расположит группы () по частоте или сделать возможность настроить порядок.
                                                      Еще раз спасибо за хороший продукт.

                                                      • 0
                                                        Понятно. Спасибо за мнение!
                                                      • +1
                                                        Столкнулся с тем, что раньше (PhpStorm+MySQL) при нажатии F4 на хранимке открывалось окно c

                                                        DROP PROCEDURE…
                                                        CREATE PROCEDURE…

                                                        Теперь, после какого-то обновления, только CREATE PROCEDURE… и запуск (Ctrl+A,Ctrl+Enter) ожидаемо приводит к [42000][1304] PROCEDURE… already exists

                                                        Это баг или фича? Какая сейчас рекомендуемая практика для изменения хранимок?
                                                        • +1
                                                          Это баг-фича :)
                                                          Мы полностью переделали то, как хранятся и отображаются исходники.
                                                          И то что, сейчас только CREATE — неудобно. Мы хотим сделать так, чтобы IDE сама понимала что происходит и накатывала миграцию.
                                                          • 0

                                                            в режиме drop-create было удобнее — можно было просто скопировать и вставить куда-нить в консоль уже готовое.
                                                            т.е. то, что IDE будет сама понимать надо ли drop или нет конечно класс, но хотелось бы и старый функционал сохранить… хотя бы в виде включаемой опции в настройках

                                                            • 0
                                                              Круто. И раз уж речь о миграциях, то может IDE будет и в каком-то виде выдавать полноценные миграции, чтобы сохранить их где-то под VCS и потом повторять процесс изменений на другом сервере-базе?

                                                              И когда планируется? Ну и да, возможность как-то получить поведение (код) подобный старому лучше сделать опционально — не все доверяют умным программам, особенно если не видят код.
                                                              • 0
                                                                Это на дальнейшие планы, да.
                                                                И код будет видно перед запуском, конечно же.
                                                          • 0
                                                            Добрый вечер.
                                                            Хорошая программа DataGrip, правда ещё не совсем привык к логике работы с проектами, в смысле обычно в других программах просто подключаешься к базе данных и работаешь, сохраняешь отдельные sql файлы, но не связанные между собой в проекты. Основное преимущество программы в том, что можно работать с разными типами баз данных: MySQL, MSSQL, PostgreSQL и прочее.
                                                            Для быстрого изучения структуры чужой базы данных очень удобно использовать ER модели. В DataGrip есть возможность отобразить визуализацию таблиц: Diagrams -> Show Visualisation… При этом отображаются таблицы со всеми своими полями (даже со связями, если связи прописаны на уровне базы данных), практически то, что нужно, однако у отображения есть один большой недостаток, что квадраты (именно квадраты!!! а не прямоугольники) отображающие таблицы излишне большие по ширине, съедают слишком много места, в то время как внутри этих квадратов пустота. В итоге эти квадраты не помещаются на страницу, приходится печатать их очень мелкими и ничего не видно. Т.е. от такой визуализации на выходе ноль! к сожалению.
                                                            1. Нельзя ли визуализацию сделать более компактной?
                                                            Пытаюсь обойти эту проблему тем, что хочу экспортировать структуру базы данных и скормить полученный *.sql файл другой программе для ER моделирования. Такой возможности в DataGrip не нахожу. Есть экстрактор для экспорта данных, но для экспорта структуры всей базы данных (или отдельной схемы) нет.
                                                            2. Нельзя ли сделать экстрактор для извлечения пустой структуры базы данных? Кое-что нагуглил на эту тему (http://www.varuste.net/show_create_table.html), но не знаю куда этот скрипт нужно «засунуть» :)
                                                            • 0

                                                              экспорт структуры, это ПКМ на DataSource (тогда все видимые схемы) или на конкретной схеме и там "Copy DDL".

                                                              • 0
                                                                Не сразу понял, что ПКМ это правая кнопка мыши :) Спасибо! Действительно «Copy DDL» помогло мне вытащить всю структуру базы данных в текстовый файл.
                                                                • 0
                                                                  Должен признаться, в сложных случаях эта функция отдаёт нерелеватный текст. Так что пожалуйста, перепроверяте его, а мы с свою очередь замёмся проблемами :)
                                                                  • 0
                                                                    Спасибо, для ER модели это не критично, во всяком случае я смог нарисовать нужную мне схему из «Copy DDL»
                                                              • 0

                                                                прямоугольниками они становятся если отключить отображение колонок.
                                                                А более удобный вид — ПКМ на диаграмме и там выбрать себе удобный Layout. Я например предпочитаю Organic.
                                                                Причём если несколько раз выбрать один и тот же Layout, то внешний вид будет меняться

                                                                • 0
                                                                  :) Нет, не подходит. Они становятся горизонтальными прямоугольниками, а нужны вертикальные прямоугольники, с полным перечнем всех полей. В перечне полей (=колонок) вся соль, как без них между таблицами связи рисовать? Связки между таблицами происходят по полям и важны названия полей, по которым идёт связка, только в этом случае ER модель приобретает мощное прикладное значение, когда глядя на схему за 5 минут можно сложный запрос составить, в незнакомой базе данных. Колонки нужны.
                                                                  У меня почему-то при переключении Layout ничего не меняется в отображении, странно.
                                                              • 0

                                                                на следующих версиях планируется ли поддержка mongodb?

                                                                  • 0

                                                                    Таск создали 10 июня 2014 04:35, он и так имеет наибольшее количество голосов, но до сих пор не взят в работу.

                                                                    • +1
                                                                      Когда мы начинаем работу над каким-то таском, об этом никак не узнать из ютрека — далеко не всегда он переводится в Open, думаю даже не все разработчики воспринимают этот статус как «взят в работу». Но конкретно про этот могу сказать, что он действительно не взят — сейчас у нас в приоритете полноценная поддержка реляционных баз.
                                                                      Могу добавить, что мы бы с огромной радостью взяли в команду человека, которому прямо сейчас интересно писать поддержку NoSQL баз и находимся в постоянном поиске.

                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                Самое читаемое