В связи с новыми задачами на работе приходится изучать 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.
Возможности программы
настройки открываются кнопкой с шестерёнкой в(C:\Users\Public\Documents\Pides\config.txt)
избранные таблицы, отмеченные галочкой, а также комментарии сохраняются в файл C:\Users\Public\Documents\Pides\favorite.txt
приложение сворачивается в трей (нажатие правой кнопки мыши на иконке в трее вызывает меню с двумя командами Show и Close)
создана сплит панель с 2 таблицами: объекты базы данных (слева), содержимое объекта (справа)
возможно изменение прозрачности окна приложения
добавлена кнопка Refresh для обновления приложения после внесения изменений в файл конфигураций
добавлено окно ввода sql-запроса (пока выборка только из одной таблицы). Запуск - клавиша F9.
-
таблица слева:
показан список таблиц, вью и матвью
по двойному клику на имени объекта открывается содержимое объекта
при нажатии на значок суммы в строке отображается количество записей в таблице
возможна сортировка в столбцах
-
при нажатии правой кнопкой мыши на заголовках копируется в clipboard:
имя конкретного заголовка
все названия заголовков через запятую
данные в конкретном столбце в виде столбца без запятой
добавлены checkbox для изменения списка объектов
возможность добавления комментариев по объекту
-
таблица справа
отображает строки выбранной слева таблицы (лимит строк задаётся в config.txt)
возможна сортировка в столбцах
контекстное меню по правой кнопке мыши на строке (копировать или удалить строку/строки)
двойной клик левой кнопкой мыши выделяет всю строку
-
при нажатии правой кнопкой мыши на заголовках копируется в clipboard:
имя конкретного заголовка
все названия заголовков через запятую
данные в конкретном столбце в виде строки: data1, data2, data3
данные в конкретном столбце в виде столбца без запятой
данные в конкретном столбце в виде выражения: in ('data1', 'data2', 'data3')
Комментарии (74)
webwork
16.08.2021 23:57+6Мне тоже все не нравилось в свое время, потом нашел dbeaver - меня здесь все устраивает, может и вам понравится.
edo1h
17.08.2021 01:59меня раздражает число кликов.
открыли БД — схемы, нужная схема, таблицы, нужная таблица, даблклик по нейzuzzz
15.09.2021 10:07Двойное нажатие вроде бы можно сменить на одинарное, в настройках есть такая опция. Но возможно это не то.
Путь "схемы, нужная схема, таблицы, нужная таблица" можно упростить на "нужная схема, нужная таблица". Ищите в настройках в разделе подключений "Navigation view" и там есть "Hide folders"
krundetz
18.08.2021 10:56У dbeaver по сути особо альтернатив нет. Особенно если не хочется городить множество клиентов под каждую СУБД с которой сталкиваешься.
В целом хорошее ПО.
Недостатки у нее то же есть, как и в любом ПО.
У меня в частности постоянно слетают настройки локального клиента. Может кто подскажет как победить эту напасть?
lam0x86
17.08.2021 01:40+7Напомнило историю из детства, как мы с другом решили написать операционку типа DOS. Долго думали, как назвать, и решили, что будет круто, если она будет называться по первым буквам наших фамилий + DOS. В итоге получилось PIDOS. Потом кто-то нам объяснил, что название не очень благозвучное :) Ну и не сделали мы ничего, конечно.
keydon2
17.08.2021 02:30+1Диагностирую у вас синдром maxime inutilitatem. Или в простонародье формошлепство. Это очень тяжелая болезнь, постарайтесь поменьше проводить время на сквозняке с открытым windows и не контактировать с начинающими разработчиками. С опытными разработчиками общаться можно - у них уже выработался иммунитет.
mrprogre Автор
17.08.2021 08:35Спасибо за диагноз, возможно Вы правы. Но вроде полезная форма, мне вот, проще работать стало
symbix
17.08.2021 03:12+1SQL-инъекции в клиенте для постгреса - это что-то новое :)
mrprogre Автор
17.08.2021 08:37Нет, только селект работает. Везде prepared statement. А так да, очень похоже :))
symbix
17.08.2021 16:14Prepared stametents это не единственное, что нужно, инъекция может быть в любой динамике.
Вот, например, в имени таблицы:
https://github.com/mrprogre/Pides/blob/master/src/main/java/Pg.java#L221
Stillgray
17.08.2021 04:06Уважаемый ТС, у вас слабая проработка вопроса.
Вот тут - https://wiki.postgresql.org/wiki/PostgreSQL_Clients смотрели?loviji
17.08.2021 08:28+1Видимо легче было писат код и эту статью, нежели смотрет обзор про клиентов
mrprogre Автор
17.08.2021 09:22-1Я попробовал 3 ide, посмотрел бегло остальные и решил сделать что-то более простое, удобное. Также решил поделиться с общественностью. Ведь у всех разный уровень в программировании..
Compolomus
17.08.2021 05:06+5Только под винду?
mrprogre Автор
17.08.2021 08:38Хороший вопрос. Да, под винду. А нужен под Линукс?
Compolomus
17.08.2021 19:24Ну я смотрю у вас путь насмерть прибит гвоздями
mrprogre Автор
17.08.2021 19:29Да, а как сделать? Я ж только рад советам
Compolomus
17.08.2021 19:36Ну обычно идёт проверка на ос, пусть какой то метод будет проверять ос и сохранять путь в свойстве, ну либо универсальный способ, рядом с исходником откуда пуск, то есть ./file.txt
mrprogre Автор
18.08.2021 00:01Всё, теперь можно и в Линуксе работать. Просьба протестировать у себя :) jar можно скачать по ссылке в посте
krundetz
18.08.2021 11:30directoryPath, linuxPath не нужны. В обоих случаях вы используете системные директории, так вытащите информацию об этом из OS в проверке на OS которая дальше по коду. Это позволит вам использовать одну константу вместо двух.
configPath, favoritePath, , linuxConfigPath, linuxFavoritePath даже если без 1 пункта избыточно, вы заранее конкатенируете пути, хотя дальше по коду у вас проверка на OS и вы вполне можете формировать пути для configFile и favoriteFile как минимум там, а как максимум вообще вынести из условия.
действия в обоих ветвях проверки на OS по сути копипаста, как минимум делать их после условия, как максимум подумать как разбить на функции и стоит ли разбивать.
mrprogre Автор
18.08.2021 11:34Спасибо! Учту! Я вчера сам об этом подумывал, когда видел что уже перебор проверок и т.д., но сил уже не было ночью переделывать.. сына еле уложил :))
сегодня поставил cisco, протестировал в linux, приложение работает, к базе подключается :))
mrprogre Автор
18.08.2021 14:23Спасибо! Благодаря Вашей идее я сделал
static String homeDir = System.getProperty("user.home") + File.separator + "Pides" + File.separator;
и убрал много лишнего кода.
oxff
17.08.2021 07:16Рекомендую бесплатный кроссплатформенный SQL Workbench/J. Я пробовал много разных тулзов, но в итоге прижился только этот. Он мне показался наиболее близким по концепции к когда-то любимому PLSQL Developer. Но, правда, я не пробовал чисто виндовые клиенты в виду отсутствия винды.
Это что касается GUI клиентов. А для консоли очень хорош pgcli. Опенсорс, питон.
shnegs
17.08.2021 08:33Столкнулся с тем, что ни одна IDE мне не нравится.
Или ниасилил?
т.к. изучаю Java четвёртый год
intellij? eclipse(Eclipse SQL Explorer)? NetBeans?
Там тоже есть редакторы SQL с выводом в таблицы. И, зачастую, имеют удобные ссылки в код и кучу генераторов. Вы же будущий разработчик.
Ualde
17.08.2021 09:38www.heidisql.com
Один интерфейс для всего подряд. Да еще и портабл версия из коробки, с хранением всех сессий.
Попробуйте для сравнения.
Tantrido
17.08.2021 10:38>. Пробовал Navicat, Datagrip, Pgadmin..
Попробовал бы dbeaver - ерундой вроде написания велосипеда не занимался бы! ;)
mrprogre Автор
17.08.2021 10:39Да ну кто ж знал то :) и почему ерундой? Учу java, практикую. Вижу пользу, делюсь с общественностью. Далее общественность, по большей части, унижает мои навыки, получаю мотивацию :))
bankir1980
17.08.2021 23:46DBeaver написан на движке eclipse вроде. На Java. Есть апи для написания плагинов. Я даже как то делал плагинчик который делал select 1 from dual, чтобы сессия с бд не рвалась сервером по таймауту (наш ДБА настроил). Думаю плагинчиками можно себе удобства все нехватающие сделать.
moscas
17.08.2021 11:27А чем DataGrip не понравился? :)
mrprogre Автор
17.08.2021 11:46-1Да просто перегружен жестко. Хотелось попроще что-нибудь
moscas
17.08.2021 12:35Тогда DBeaver люди зря советуют :)
Но вообще мы стараемся упрощать интерфейс. Можете вспомнить одно место, где особенно заметна перегруженность?mrprogre Автор
17.08.2021 13:14Хорошо, что Вы спросили. Я как только установил trial DataGrip и пытался быстро поработать, то столкнулся с некоторыми неудобными моментами (ну..после работы в PLSQL developer, возможно и наговариваю из-за непривычки) и хотел их записать и отправить в JetBrains, но решил, что это кроме меня никому не надо и что у вас хватает своих тестировщиков, вот и начал делать свою IDE попроще. А сразу скажу, что интерфейс действительно перегружен лично для меня..я бы приложил скрин, но Вы сами откройте DataGrip и посмотрите на мою простую форму.. вот надо что-то среднее. Я б Вам поубирал лишнего 60% с интерфейса и оставил бы только нужное.. но кто я такой в данном мероприятии - начинающий я относительно (3 года с Oracle, 4 с Java), но я знаю что такое удобство, в этом я 34 года)) и ленивый наверное..всё стараюсь делать так, чтобы по 1 клику всё было, ну мааааксимум 2 и максимально автоматизирую всё что можно!
aim
17.08.2021 11:46Ещё один голос за DBeaver!
migelle74
18.08.2021 09:52Мне почти все в DBeaver-е нравится. Но непонятно одно — как производится редактирование функций. В toad для Oracle все просто ткнул в процедуру/функцию, она загрузилась в редактор и там можно поредактировать, откомпилировать, посмотреть ошибки и т.п.
В DBeaver-е это как-то не так реализовано. Ткнул в функцию, она загрузилась во вкладку. Там есть несколько бесполезных подвкладок и есть «Исходный код», вроде то, что надо. Там даже поредактировать можно. Но скомпилировать никак, только сохранить. Посмотреть ошибки никак. Зато есть кнопочка «Open in Sql console» и там уже можно редактировать, покомпилировать и т.д. И зачем нужно окно типа «Функция» и что в нем делать мне непонятно.
Может есть какой-то другой сценарий работы с функциями?
MartyMcAir
18.08.2021 06:49Месяцев 5 назад была идея аналогичная вашей. Но решил не писать, так как посчитал идею для своего уровня знаний слишком сложной. Благодарю, за реализацию, будет интересно почитать ваш код.) И спасибо за вклад в Open Source.)
fedorro
В этой статье прекрасно всё: посыл, основное содержание, код…
— вот чего Вам в Pgadmin не хватило? Киллер-фича, однозначно — ТОП! =DВроде тот кто программистом работает должен обладать аналитическим мышлением чтобы понять что не стоит такое публиковать.
mrprogre Автор
Я не только программист, я ещё и музыку сочиняю. Поэтому делиться с общественностью чем-то полезным, считаю, стоит. Одному человеку помогу - уже не зря делал.