The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Представлен usql, универсальный интерфейс командной строки для СУБД

03.03.2017 09:48

В рамках проекта usql развивается утилита с универсальным интерфейсом командной строки, поддерживающим работу с СУБД PostgreSQL, MySQL, Oracle, SQLite и Microsoft SQL Server. Реализованные в usql команды повторяют интерфейс утилиты psql, развиваемой проектом PostgreSQL. Особенностью usql является использование схемы dburl для задания параметров подключения к БД, напоминающей URL (например, "pg://user:pass@localhost/dbname" или "file:dbname.sqlite3"). Целью разработки usql является создание прозрачной замены psql, не привязанной к конкретной СУБД. Код написан на языке Go и распространяется под лицензией MIT.



  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46128-usql
Ключевые слова: usql, psql, postgresql, database, sql
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (39) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 09:52, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Полезная вещь, давно мечтал об интерфейсе psql для MySQL.
     
  • 1.2, Аноним (-), 09:57, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    надо попробовать
     
  • 1.4, XXXasd (ok), 10:00, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    > Особенностью usql является использование схемы dburl для задания параметров подключения к БД, напоминающей URL (например, "pg://user:pass@localhost/dbname" или "file:dbname.sqlite3")

    ВОТ ЭТО ЧУДЕСА!

    ради этого конечно стоит сразу устанавливать :-D

     
     
  • 2.18, пох (?), 13:06, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > ВОТ ЭТО ЧУДЕСА!

    это - нормально (как, блин, по-твоему, еще должно выглядеть подключение к БД, когда возможных протоколов несколько?)

    Ненормально что в деме автору понадобилось для mysql дополнительно дергать use booktest - грокаю явную usage inconsistence, причем в совершенно элементарном месте. И еще одну - в том что для всех почему-то "тип_бд://user:pass@", а у sqlite  тип вдруг оказывается в жопе.

    Если автора такие мелочи не смутили - есть подозрение, что еще много что его не смутило.

     
     
  • 3.20, anonymous (??), 13:30, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    у скулайте в жопе тип, потому что это расширение файла
     
     
  • 4.24, пох (?), 16:10, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    а, то есть у них file намертво и навеки прибит к sqlite? (ну, я надеюсь, что хоть так, а не автоугадав engine по расширению)
     
  • 3.33, R (?), 00:36, 05/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > как, блин, по-твоему, еще должно выглядеть подключение к БД, когда возможных протоколов несколько?

    Делаешь man 2 connect, затем man 2 recv с флагом MSG_PEEK и база тебе расскажет кто она, какой ей протокол нужен и все остальное, что тебе нужно знать (тебе нужно будет распознать один из вариантов, которых меньше, чем пальцев на одной руке). Более того, это, скорее всего, понадобиться, когда строка подключения будет "odbc://user:pass@...". Впрочем, если это очередной Go-велосипед школьника, то он до этого не дойдет и бросит раньше. Однако, я верю в людей, даже если они пишут на Go под лицензией MIT.

     

  • 1.5, иксперд (?), 10:11, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    только сами команды в sql будут различаться, так что смысла нет.
     
     
  • 2.6, Аноним (-), 10:13, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Смысла много, если посмотреть на убогость mysql-ного клиента.:(
     
     
  • 3.8, arka (ok), 10:41, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Можете немного прояснить в чём его убогость, и что за фичи в этом клиенте?
     
     
  • 4.13, RomanCh (ok), 11:17, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Например, крайне убогое (на фоне psql) автодополнение и выпадание по Ctrl+C.

    Последнее убого тем что psql (так же как и привычный shell) по Ctrl+С позволяет сбросить набираемый длинный запрос когда курсор находится в любом его месте и начать листать историю с последней команды. В mysql же Ctrl+C выбросит из клиента, а если его не нажать, то придётся затирать всю команду целиком (или дополнять её \c) после чего вы останетесь не на самой последней позиции в истории, а на месте затёртой команды. Что далеко не всегда удобно.

    Ещё веселее бывает, если вы запустили запрос и понимаете что он выполняется дольше чем предполагалось и не очень-то он уже и нужен, то нажимаете Ctrl+C что бы прервать его, но иногда в этот момент запрос завершается сам, ваш Ctrl+C уходит в mysql клиента и обрывает вашу сессию. Что опять-таки совершенно неудобно.

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

     
     
  • 5.15, Аноним (-), 11:49, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    По первому пункту

    > по Ctrl+С позволяет сбросить набираемый

    Посмотри, работает ли Ctrl+u (emacs-овское и readline-овское сочетание, удаляет всё слева от курсора). Переместить курсор в крайнее правое положение: Ctrl+e. Соответственно Ctrl+e , Ctrl+u очищает строку целиком, без перевода строки и без посылки какой бы то нибыло команды интерпретатору. Потому что иногда, даже в bash, Ctrl+c работает слишком инвазивно, я лично привык использовать Ctrl+e , Ctrl+u в разных cli. Интересно, работает ли это в cli мускула.

     
     
  • 6.16, Аноним (-), 12:04, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Интересно, работает ли это в cli мускула.

    mysql используется readline или libedit,

    Если скомпилен с readline, то работает.

     
  • 6.32, Анонимец01 (?), 13:16, 04/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Посмотри, работает ли Ctrl+u

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

     
  • 5.17, Аноним (-), 12:11, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Например, крайне убогое (на фоне psql) автодополнение и выпадание по Ctrl+C.

    И как вам в 2012м?
    https://bugs.mysql.com/bug.php?id=1989

    Верните машину времени на место.

     
     
  • 6.19, пох (?), 13:10, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Например, крайне убогое (на фоне psql) автодополнение и выпадание по Ctrl+C.
    > И как вам в 2012м?

    так же как в 2003м.
    > https://bugs.mysql.com/bug.php?id=1989

    баг закрыт без попытки что-либо с этим сделать.
    В 2012м последний раз кто-то пытался уговорить его переоткрыть - безрезультатно.

     
     
  • 7.42, Аноним (-), 20:04, 07/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    отпишите баг репорт и точные шаги чтобы воспроизвести:
    mysql> select sleep(5);
    ^C^C -- query aborted
    +----------+
    | sleep(5) |
    +----------+
    +----------+
    1 row in set (0.50 sec)

    mysql> ^C^C^C
    на 5.7.14 не воспроизводится. Уговаривать не надо, просто дайте способ разработчикам повторить проблему.

     
  • 5.38, vitalif (ok), 10:37, 07/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Хы-хы, будет ли эта поделка нормально автодополнять - большой вопрос

    Привычка сбрасывать текст запроса по ctrl-c довольно дурацкая, лучше ее поменяй)

    Я делаю так - home, добавляю в начало # и жму ентер. Это либо получается коммент, либо синтакс еррор. Но что самое важное, текст остается в истории для дальнейшей правки

     
  • 3.21, anonimous (?), 13:46, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Зачем люди вообще используют mysql, если есть postgres?
     
     
  • 4.25, пох (?), 16:16, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Зачем люди вообще используют mysql, если есть postgres?

    обычно после первой или второй встречи с vacuum full - в зависимости от степени тяжести травм, полученных после первой.

     
     
  • 5.34, Вареник (?), 04:11, 05/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Странные у Вас встречи...

    За дясятилетия никаких проблем, в разных проектах.

     
  • 4.27, KonstantinB (ok), 21:24, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Смотря кто. Недовеб-программисты - потому что ничего другого не знают.

    Но бывают и объективные причины: https://eng.uber.com/mysql-migration/

     
     
  • 5.29, fi (ok), 23:18, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    известный не кошерный пример - простое обоснование "почему я ХОЧУ mysql, а вы мне pg дали"
     
  • 5.35, Анонимец01 (?), 15:57, 05/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Но бывают и объективные причины: https://eng.uber.com/mysql-migration/

    Спасибо, очень толковая статья

     
  • 4.36, adminlocalhost (ok), 20:06, 05/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот
    http://postgresql.ru.net/node/215495  

    Мало что ли?

     

  • 1.7, Аноним (-), 10:31, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    неужто можно наконец-то будет выбросить этот чёртов sqlplus?!
     
     
  • 2.9, Аноним (-), 10:43, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Откройте для себя SQLcl - это утилита командной из SQL Developer от Oracle
    Если не нравится ява - сделайте alias sqlplus='rlwrap sqlplus '

    Никогда не любил универсальные утилиты. Вечно в них что-то не поддерживается или поддерживается не так. А уж родной psql от постгри ни на что не променяю ни за какие коврижки. Лучше консольного клиента не видел.

     
     
  • 3.31, ACCA (ok), 07:09, 04/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Невелика разница.

    В Орякеле получить аналог \l - это поубивать всех индусов апстену.

    Про \dt и проч. даже мечтать не придходится.

     
  • 2.10, БоБо (?), 10:45, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Я думаю, что у этой поделки функционал поменьше, нет? :) Скорее всего, через него только простые запросы типа select * from table можно делать.
     
     
  • 3.40, vitalif (ok), 10:39, 07/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Я думаю, что у этой поделки функционал поменьше, нет? :) Скорее всего,
    > через него только простые запросы типа select * from table можно
    > делать.

    У sql флюс тоже все оч грустно, оракл - худшая субд))

     
  • 2.39, vitalif (ok), 10:38, 07/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > неужто можно наконец-то будет выбросить этот чёртов sqlplus?!

    Гы, я в консоли виесто него извращался и DBI::Shell юзал)))

     

  • 1.14, Аноним (-), 11:45, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Что насчёт подключения и авторизации через unix-сокет? Ssl сертификат?
     
  • 1.22, Аноним (22), 14:40, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ура! Новость о проге в 400 строк.
     
     
  • 2.23, Admino (ok), 15:17, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это Go, он такой!
     

  • 1.26, ptr (??), 20:56, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Толку только с такой утилиты на реальной БД с тысячами таблиц и десятками (если не сотнями) полей в каждой - никакого.
    Необходим горизонатальный скроллинг хотя бы. Да и вообще, интерактивная работа с рекордсетом. А лучше даже с несколькими. И автозавершение/перебор по именам объектов в БД.

     
  • 1.28, Аноним (-), 23:12, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Особенностью usql является использование схемы dburl
    > Provides a standardized way of processing database connection strings in the form of a URL for Go
    > 11 commits
    > 1 contributor

    Отличный стандарт.

     
  • 1.30, ALex_hha (ok), 00:34, 04/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Можете немного прояснить в чём его убогость, и что за фичи в этом клиенте?

    а вы запустите штатный консольный клиент postgresql и больше возвращаться на mysql не захотите ;)

     
     
  • 2.41, vitalif (ok), 10:41, 07/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> Можете немного прояснить в чём его убогость, и что за фичи в этом клиенте?
    > а вы запустите штатный консольный клиент postgresql и больше возвращаться на mysql
    > не захотите ;)

    Не замечаю такого, единственное что лучше это дополнение, но мне некритично

    А вот то что \d и т.п это КОМАНДЫ psql, а не SQL запросы - очень неудобно. Потом когда надо определение таблицы программно вытащить, приходится его по кусочкам из каталога собирать. А в mysql просто такой же запрос делаешь SHOW CREATE TABLE и все...

     

  • 1.37, лютый жабист__ (?), 05:34, 06/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    С одной стороны, psql круче всех на голову, особенно ораклового поделия.

    С другой стороны, всё-равно на даже средних базах уже неудобно работать даже в psql. Гораздо удобнее когда у тебя на экране все 50++ твои основных команды и ты их запускаешь по ctrl+enter, а не мучительно ищешь в истории или не дай божЕ, набираешь, копипастишь. Графический показометр схемы итд итп

    В общем, увы, но нинужно.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру