В связи с новыми задачами на работе приходится изучать Postgres. Столкнулся с тем, что ни одна IDE мне не нравится. Пробовал Navicat, Datagrip, Pgadmin.. всё не то, да и дорого порой слишком.. возможно привык к функционалу PLSQL developer 14. В общем, не долго думая, решил сам написать себе IDE на Java (т.к. изучаю Java четвёртый год) и включить в неё самые удобные для меня функции (а может и не только для меня удобные). Назвал её PIDES ( Postgres + IDE + Sql :)

Если у вас есть какие-нибудь дополнения по функционалу или коду - предлагайте здесь. Лично я намучился с обработкой селекта внизу справа (запуск - F9). Выборка делается из одной таблицы, менять последовательность полей нельзя, но можно убирать ненужные.

Каждый может подключиться к своей БД, предварительно указав параметры подключения по кнопке с шестерёнкой.

Также программа работает в Linux (в mint 20.2 не поддерживается прозрачность окна (opacity), в ubuntu 20 не поддерживается TrayIcon).

Даёшь open source! Скачать jar.

Возможности программы
  1. настройки открываются кнопкой с шестерёнкой в(C:\Users\Public\Documents\Pides\config.txt)

  2. избранные таблицы, отмеченные галочкой, а также комментарии сохраняются в файл C:\Users\Public\Documents\Pides\favorite.txt

  3. приложение сворачивается в трей (нажатие правой кнопки мыши на иконке в трее вызывает меню с двумя командами Show и Close)

  4. создана сплит панель с 2 таблицами: объекты базы данных (слева), содержимое объекта (справа)

  5. возможно изменение прозрачности окна приложения

  6. добавлена кнопка Refresh для обновления приложения после внесения изменений в файл конфигураций

  7. добавлено окно ввода sql-запроса (пока выборка только из одной таблицы). Запуск - клавиша F9.

  8. таблица слева:

    • показан список таблиц, вью и матвью

    • по двойному клику на имени объекта открывается содержимое объекта

    • при нажатии на значок суммы в строке отображается количество записей в таблице

    • возможна сортировка в столбцах

    • при нажатии правой кнопкой мыши на заголовках копируется в clipboard:

      1. имя конкретного заголовка

      2. все названия заголовков через запятую

      3. данные в конкретном столбце в виде столбца без запятой

    • добавлены checkbox для изменения списка объектов

    • возможность добавления комментариев по объекту

  9. таблица справа

    • отображает строки выбранной слева таблицы (лимит строк задаётся в config.txt)

    • возможна сортировка в столбцах

    • контекстное меню по правой кнопке мыши на строке (копировать или удалить строку/строки)

    • двойной клик левой кнопкой мыши выделяет всю строку

    • при нажатии правой кнопкой мыши на заголовках копируется в clipboard:

      1. имя конкретного заголовка

      2. все названия заголовков через запятую

      3. данные в конкретном столбце в виде строки: data1, data2, data3

      4. данные в конкретном столбце в виде столбца без запятой

      5. данные в конкретном столбце в виде выражения: in ('data1', 'data2', 'data3')

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


  1. fedorro
    16.08.2021 23:43
    +18

    В этой статье прекрасно всё: посыл, основное содержание, код…
    Вроде тот кто программистом работает должен обладать аналитическим мышлением чтобы понять что не стоит такое публиковать.

    возможно изменение прозрачности окна приложения
    — вот чего Вам в Pgadmin не хватило? Киллер-фича, однозначно — ТОП! =D


    1. mrprogre Автор
      16.08.2021 23:48

      Я не только программист, я ещё и музыку сочиняю. Поэтому делиться с общественностью чем-то полезным, считаю, стоит. Одному человеку помогу - уже не зря делал.


  1. webwork
    16.08.2021 23:57
    +6

    Мне тоже все не нравилось в свое время, потом нашел dbeaver - меня здесь все устраивает, может и вам понравится.


    1. mrprogre Автор
      17.08.2021 00:00
      +1

      спасибо, посмотрю!


    1. edo1h
      17.08.2021 01:59

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


      1. mrprogre Автор
        17.08.2021 08:30

        У меня 1 клик - это подключение :)


      1. zuzzz
        15.09.2021 10:07

        Двойное нажатие вроде бы можно сменить на одинарное, в настройках есть такая опция. Но возможно это не то.
        Путь "схемы, нужная схема, таблицы, нужная таблица" можно упростить на "нужная схема, нужная таблица". Ищите в настройках в разделе подключений "Navigation view" и там есть "Hide folders"


    1. krundetz
      18.08.2021 10:56

      У dbeaver по сути особо альтернатив нет. Особенно если не хочется городить множество клиентов под каждую СУБД с которой сталкиваешься.

      В целом хорошее ПО.

      Недостатки у нее то же есть, как и в любом ПО.

      У меня в частности постоянно слетают настройки локального клиента. Может кто подскажет как победить эту напасть?


  1. sl_bug
    16.08.2021 23:59
    +2

    https://www.pgcli.com больше ничего не надо


    1. mrprogre Автор
      17.08.2021 00:01

      да, тоже вариант интересный!


  1. DrBulkin
    17.08.2021 00:02

    Пробовали ли вы dbreaver?


    1. mrprogre Автор
      17.08.2021 00:04

      нет, посмотрю! Спасибо!


    1. Tantrido
      17.08.2021 10:23

      +1 Попробовал dbeaver - более ничего не надо - всё есть!


      1. mrprogre Автор
        17.08.2021 10:36

        Обязательно его буду смотреть, многие советуют здесь. Спасибо!


  1. lam0x86
    17.08.2021 01:40
    +7

    Напомнило историю из детства, как мы с другом решили написать операционку типа DOS. Долго думали, как назвать, и решили, что будет круто, если она будет называться по первым буквам наших фамилий + DOS. В итоге получилось PIDOS. Потом кто-то нам объяснил, что название не очень благозвучное :) Ну и не сделали мы ничего, конечно.


    1. mrprogre Автор
      17.08.2021 08:32

      Главное начать, я думаю, шлепать формы :)) как мне тут пишут.


  1. jonywtf
    17.08.2021 01:47

    1. mrprogre Автор
      17.08.2021 09:20

      Спасибо, гляну!


  1. axifive
    17.08.2021 02:13
    +2

    Как практический опыт это конечно полезно, но вы определенно мало посмотрели готовых клиентов.
    Мне вот помимо pgAdmin нравится pgweb


    1. mrprogre Автор
      17.08.2021 08:32

      Спасибо, посмотрю обязательно!


  1. keydon2
    17.08.2021 02:30
    +1

    Диагностирую у вас синдром maxime inutilitatem. Или в простонародье формошлепство. Это очень тяжелая болезнь, постарайтесь поменьше проводить время на сквозняке с открытым windows и не контактировать с начинающими разработчиками. С опытными разработчиками общаться можно - у них уже выработался иммунитет.


    1. mrprogre Автор
      17.08.2021 08:35

      Спасибо за диагноз, возможно Вы правы. Но вроде полезная форма, мне вот, проще работать стало


  1. symbix
    17.08.2021 03:12
    +1

    SQL-инъекции в клиенте для постгреса - это что-то новое :)


    1. mrprogre Автор
      17.08.2021 08:37

      Нет, только селект работает. Везде prepared statement. А так да, очень похоже :))


      1. symbix
        17.08.2021 16:14

        Prepared stametents это не единственное, что нужно, инъекция может быть в любой динамике.

        Вот, например, в имени таблицы:

        https://github.com/mrprogre/Pides/blob/master/src/main/java/Pg.java#L221


        1. mrprogre Автор
          17.08.2021 18:01

          Да, интересно, спасибо!!


  1. krabdb
    17.08.2021 03:43
    +1

    Странно, что в списке нет DBeaver. Отличный вариант и бесплатной community версии вполне достаточно для работы.


    1. mrprogre Автор
      17.08.2021 08:37

      Да вот тепепь по комментам знаю, что его многие используют. Спасибо


  1. Stillgray
    17.08.2021 04:06

    Уважаемый ТС, у вас слабая проработка вопроса.
    Вот тут - https://wiki.postgresql.org/wiki/PostgreSQL_Clients смотрели?


    1. loviji
      17.08.2021 08:28
      +1

      Видимо легче было писат код и эту статью, нежели смотрет обзор про клиентов


      1. mrprogre Автор
        17.08.2021 09:22
        -1

        Я попробовал 3 ide, посмотрел бегло остальные и решил сделать что-то более простое, удобное. Также решил поделиться с общественностью. Ведь у всех разный уровень в программировании..


  1. Compolomus
    17.08.2021 05:06
    +5

    Только под винду?


    1. mrprogre Автор
      17.08.2021 08:38

      Хороший вопрос. Да, под винду. А нужен под Линукс?


      1. Compolomus
        17.08.2021 19:24

        Ну я смотрю у вас путь насмерть прибит гвоздями


        1. mrprogre Автор
          17.08.2021 19:29

          Да, а как сделать? Я ж только рад советам


          1. Compolomus
            17.08.2021 19:36

            Ну обычно идёт проверка на ос, пусть какой то метод будет проверять ос и сохранять путь в свойстве, ну либо универсальный способ, рядом с исходником откуда пуск, то есть ./file.txt


            1. mrprogre Автор
              17.08.2021 19:37

              О, интересная задачка, сделаю :)


            1. mrprogre Автор
              18.08.2021 00:01

              Всё, теперь можно и в Линуксе работать. Просьба протестировать у себя :) jar можно скачать по ссылке в посте


              1. krundetz
                18.08.2021 11:30

                1. directoryPath, linuxPath не нужны. В обоих случаях вы используете системные директории, так вытащите информацию об этом из OS в проверке на OS которая дальше по коду. Это позволит вам использовать одну константу вместо двух.

                2. configPath, favoritePath, , linuxConfigPath, linuxFavoritePath даже если без 1 пункта избыточно, вы заранее конкатенируете пути, хотя дальше по коду у вас проверка на OS и вы вполне можете формировать пути для configFile и favoriteFile как минимум там, а как максимум вообще вынести из условия.

                3. действия в обоих ветвях проверки на OS по сути копипаста, как минимум делать их после условия, как максимум подумать как разбить на функции и стоит ли разбивать.


                1. mrprogre Автор
                  18.08.2021 11:34

                  Спасибо! Учту! Я вчера сам об этом подумывал, когда видел что уже перебор проверок и т.д., но сил уже не было ночью переделывать.. сына еле уложил :))

                  сегодня поставил cisco, протестировал в linux, приложение работает, к базе подключается :))


                1. mrprogre Автор
                  18.08.2021 14:23

                  Спасибо! Благодаря Вашей идее я сделал

                  static String homeDir = System.getProperty("user.home") + File.separator + "Pides" + File.separator;

                  и убрал много лишнего кода.


  1. oxff
    17.08.2021 07:16

    Рекомендую бесплатный кроссплатформенный SQL Workbench/J. Я пробовал много разных тулзов, но в итоге прижился только этот. Он мне показался наиболее близким по концепции к когда-то любимому PLSQL Developer. Но, правда, я не пробовал чисто виндовые клиенты в виду отсутствия винды.

    Это что касается GUI клиентов. А для консоли очень хорош pgcli. Опенсорс, питон.


    1. mrprogre Автор
      17.08.2021 08:38

      Спасибо, посмотрю. Без девелопера прескорбно:)


  1. bankinobi
    17.08.2021 08:15

    Использую связку sql developer + jdbs драйвер для postgresql


    1. mrprogre Автор
      17.08.2021 08:40

      Интересно, попробую


  1. dzol
    17.08.2021 08:20

    Одно время пользовался DBeaver, меня устраивало.


    1. mrprogre Автор
      17.08.2021 09:23

      Да, посмотрю его точно! Спасибо!


  1. shnegs
    17.08.2021 08:33

    Столкнулся с тем, что ни одна IDE мне не нравится.

    Или ниасилил?

    т.к. изучаю Java четвёртый год

    intellij? eclipse(Eclipse SQL Explorer)? NetBeans?

    Там тоже есть редакторы SQL с выводом в таблицы. И, зачастую, имеют удобные ссылки в код и кучу генераторов. Вы же будущий разработчик.


    1. mrprogre Автор
      17.08.2021 08:42
      -2

      Наверное не осилил.. Тяга создавать!


  1. avonar
    17.08.2021 08:56

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


    1. mrprogre Автор
      17.08.2021 09:23

      Гляну, спасибо!


  1. Ualde
    17.08.2021 09:38

    www.heidisql.com
    Один интерфейс для всего подряд. Да еще и портабл версия из коробки, с хранением всех сессий.
    Попробуйте для сравнения.


    1. mrprogre Автор
      17.08.2021 09:42

      Спасибо, гляну сегодня!


  1. komkom
    17.08.2021 09:44
    +1

    автор приводит PLSQL Developer в пример, но на мой взгляд он ничто по сравнению с IBExpert'ом (который, к сожалению только для FB и IB) =D


    1. mrprogre Автор
      17.08.2021 09:46

      Не знаю, почитаю что за штука. Спасибо. А девелопер мне очень нравится в работе с Оракл


    1. Tantrido
      17.08.2021 10:46

      Да нет, в PLSQL Developer возможностей и удобства на порядок больше.


  1. Tantrido
    17.08.2021 10:38

    >. Пробовал Navicat, Datagrip, Pgadmin..

    Попробовал бы dbeaver - ерундой вроде написания велосипеда не занимался бы! ;)


    1. mrprogre Автор
      17.08.2021 10:39

      Да ну кто ж знал то :) и почему ерундой? Учу java, практикую. Вижу пользу, делюсь с общественностью. Далее общественность, по большей части, унижает мои навыки, получаю мотивацию :))


      1. bankir1980
        17.08.2021 23:46

        DBeaver написан на движке eclipse вроде. На Java. Есть апи для написания плагинов. Я даже как то делал плагинчик который делал select 1 from dual, чтобы сессия с бд не рвалась сервером по таймауту (наш ДБА настроил). Думаю плагинчиками можно себе удобства все нехватающие сделать.


  1. moscas
    17.08.2021 11:27

    А чем DataGrip не понравился? :)


    1. mrprogre Автор
      17.08.2021 11:46
      -1

      Да просто перегружен жестко. Хотелось попроще что-нибудь


      1. moscas
        17.08.2021 12:35

        Тогда DBeaver люди зря советуют :)

        Но вообще мы стараемся упрощать интерфейс. Можете вспомнить одно место, где особенно заметна перегруженность?


        1. mrprogre Автор
          17.08.2021 13:14

          Хорошо, что Вы спросили. Я как только установил trial DataGrip и пытался быстро поработать, то столкнулся с некоторыми неудобными моментами (ну..после работы в PLSQL developer, возможно и наговариваю из-за непривычки) и хотел их записать и отправить в JetBrains, но решил, что это кроме меня никому не надо и что у вас хватает своих тестировщиков, вот и начал делать свою IDE попроще. А сразу скажу, что интерфейс действительно перегружен лично для меня..я бы приложил скрин, но Вы сами откройте DataGrip и посмотрите на мою простую форму.. вот надо что-то среднее. Я б Вам поубирал лишнего 60% с интерфейса и оставил бы только нужное.. но кто я такой в данном мероприятии - начинающий я относительно (3 года с Oracle, 4 с Java), но я знаю что такое удобство, в этом я 34 года)) и ленивый наверное..всё стараюсь делать так, чтобы по 1 клику всё было, ну мааааксимум 2 и максимально автоматизирую всё что можно!


  1. aim
    17.08.2021 11:46

    Ещё один голос за DBeaver!


    1. mrprogre Автор
      17.08.2021 12:00

      качаю)


    1. migelle74
      18.08.2021 09:52

      Мне почти все в DBeaver-е нравится. Но непонятно одно — как производится редактирование функций. В toad для Oracle все просто ткнул в процедуру/функцию, она загрузилась в редактор и там можно поредактировать, откомпилировать, посмотреть ошибки и т.п.

      В DBeaver-е это как-то не так реализовано. Ткнул в функцию, она загрузилась во вкладку. Там есть несколько бесполезных подвкладок и есть «Исходный код», вроде то, что надо. Там даже поредактировать можно. Но скомпилировать никак, только сохранить. Посмотреть ошибки никак. Зато есть кнопочка «Open in Sql console» и там уже можно редактировать, покомпилировать и т.д. И зачем нужно окно типа «Функция» и что в нем делать мне непонятно.
      Может есть какой-то другой сценарий работы с функциями?


  1. plotn1
    17.08.2021 22:15
    +1

    Над названием, считаю, надо ещё поработать, оно почти-почти,но надо ещё чуть чуть.

    Обратите внимание например на "Порядок и законность. Демократический единый центр"


    1. mrprogre Автор
      17.08.2021 22:16
      -1

      Ххахаха


  1. MartyMcAir
    18.08.2021 06:49

    Месяцев 5 назад была идея аналогичная вашей. Но решил не писать, так как посчитал идею для своего уровня знаний слишком сложной. Благодарю, за реализацию, будет интересно почитать ваш код.) И спасибо за вклад в Open Source.)


    1. mrprogre Автор
      18.08.2021 06:51

      Спасибо за комментарий, крайне приятно!


  1. Arty_Fact
    18.08.2021 11:43

    Вижу Java и IDE в тегах, не понимаю, почему бы не использовать IDEA и для работы с базой...


    1. mrprogre Автор
      18.08.2021 11:50

      Тоже вариант, но, думаю в их DataGrip более полный набор функционала для работы с БД


      1. Arty_Fact
        18.08.2021 18:02
        +1

        Нет:

        This section will give you a brief overview of the features available in DataGrip. It is also relevant for the database plugin used in IntelliJ IDEA Ultimate, PyCharm Professional, PhpStorm, RubyMine, CLion, AppCode, GoLand and Rider.


        1. mrprogre Автор
          18.08.2021 18:04

          Спасибо! Проверимс. IDEA  мне нравится