URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 110588
[ Назад ]

Исходное сообщение
"Представлен usql, универсальный интерфейс командной строки д..."

Отправлено opennews , 03-Мрт-17 09:52 
В рамках проекта usql (https://github.com/knq/usql) развивается утилита с универсальным интерфейсом командной строки, поддерживающим работу с СУБД PostgreSQL, MySQL, Oracle, SQLite и Microsoft SQL Server. Реализованные в usql команды повторяют интерфейс утилиты psql (https://www.postgresql.org/docs/9.2/static/app-psql.html), развиваемой проектом PostgreSQL. Особенностью usql является использование схемы dburl (https://github.com/knq/dburl) для задания параметров подключения к БД, напоминающей URL (например, "pg://user:pass@localhost/dbname" или "file:dbname.sqlite3"). Целью разработки usql является создание прозрачной замены psql, не привязанной к конкретной СУБД. Код написан на языке Go и распространяется (https://github.com/knq/usql) под лицензией MIT.


URL: https://news.ycombinator.com/item?id=13780587
Новость: http://www.opennet.me/opennews/art.shtml?num=46128


Содержание

Сообщения в этом обсуждении
"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 09:52 
Полезная вещь, давно мечтал об интерфейсе psql для MySQL.

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 09:57 
надо попробовать

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено XXXasd , 03-Мрт-17 10:00 
> Особенностью usql является использование схемы dburl для задания параметров подключения к БД, напоминающей URL (например, "pg://user:pass@localhost/dbname" или "file:dbname.sqlite3")

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

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено пох , 03-Мрт-17 13:06 
> ВОТ ЭТО ЧУДЕСА!

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

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

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено anonymous , 03-Мрт-17 13:30 
у скулайте в жопе тип, потому что это расширение файла

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено пох , 03-Мрт-17 16:10 
а, то есть у них file намертво и навеки прибит к sqlite? (ну, я надеюсь, что хоть так, а не автоугадав engine по расширению)

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено R , 05-Мрт-17 00:36 
> как, блин, по-твоему, еще должно выглядеть подключение к БД, когда возможных протоколов несколько?

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено иксперд , 03-Мрт-17 10:11 
только сами команды в sql будут различаться, так что смысла нет.

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 10:13 
Смысла много, если посмотреть на убогость mysql-ного клиента.:(

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено arka , 03-Мрт-17 10:41 
Можете немного прояснить в чём его убогость, и что за фичи в этом клиенте?

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено RomanCh , 03-Мрт-17 11:17 
Например, крайне убогое (на фоне psql) автодополнение и выпадание по Ctrl+C.

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

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

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 11:49 
По первому пункту

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

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 12:04 
> Интересно, работает ли это в cli мускула.

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

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Анонимец01 , 04-Мрт-17 13:16 
> Посмотри, работает ли Ctrl+u

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 12:11 
> Например, крайне убогое (на фоне psql) автодополнение и выпадание по Ctrl+C.

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

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено пох , 03-Мрт-17 13:10 
>> Например, крайне убогое (на фоне psql) автодополнение и выпадание по Ctrl+C.
> И как вам в 2012м?

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

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 07-Мрт-17 20:04 
отпишите баг репорт и точные шаги чтобы воспроизвести:
mysql> select sleep(5);
^C^C -- query aborted
+----------+
| sleep(5) |
+----------+
+----------+
1 row in set (0.50 sec)

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено vitalif , 07-Мрт-17 10:37 
Хы-хы, будет ли эта поделка нормально автодополнять - большой вопрос

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

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено anonimous , 03-Мрт-17 13:46 
Зачем люди вообще используют mysql, если есть postgres?

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено пох , 03-Мрт-17 16:16 
> Зачем люди вообще используют mysql, если есть postgres?

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Вареник , 05-Мрт-17 04:11 
Странные у Вас встречи...

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено KonstantinB , 03-Мрт-17 21:24 
Смотря кто. Недовеб-программисты - потому что ничего другого не знают.

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено fi , 03-Мрт-17 23:18 
известный не кошерный пример - простое обоснование "почему я ХОЧУ mysql, а вы мне pg дали"

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Анонимец01 , 05-Мрт-17 15:57 
> Но бывают и объективные причины: https://eng.uber.com/mysql-migration/

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено adminlocalhost , 05-Мрт-17 20:06 
Ну вот
http://postgresql.ru.net/node/215495  

Мало что ли?


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 10:31 
неужто можно наконец-то будет выбросить этот чёртов sqlplus?!

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 10:43 
Откройте для себя SQLcl - это утилита командной из SQL Developer от Oracle
Если не нравится ява - сделайте alias sqlplus='rlwrap sqlplus '

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено ACCA , 04-Мрт-17 07:09 
Невелика разница.

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

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено БоБо , 03-Мрт-17 10:45 
Я думаю, что у этой поделки функционал поменьше, нет? :) Скорее всего, через него только простые запросы типа select * from table можно делать.

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено vitalif , 07-Мрт-17 10:39 
> Я думаю, что у этой поделки функционал поменьше, нет? :) Скорее всего,
> через него только простые запросы типа select * from table можно
> делать.

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено vitalif , 07-Мрт-17 10:38 
> неужто можно наконец-то будет выбросить этот чёртов sqlplus?!

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 11:45 
Что насчёт подключения и авторизации через unix-сокет? Ssl сертификат?

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 14:40 
Ура! Новость о проге в 400 строк.

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Admino , 03-Мрт-17 15:17 
Это Go, он такой!

"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено ptr , 03-Мрт-17 20:56 
Толку только с такой утилиты на реальной БД с тысячами таблиц и десятками (если не сотнями) полей в каждой - никакого.
Необходим горизонатальный скроллинг хотя бы. Да и вообще, интерактивная работа с рекордсетом. А лучше даже с несколькими. И автозавершение/перебор по именам объектов в БД.


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено Аноним , 03-Мрт-17 23:12 
> Особенностью usql является использование схемы dburl
> Provides a standardized way of processing database connection strings in the form of a URL for Go
> 11 commits
> 1 contributor

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено ALex_hha , 04-Мрт-17 00:34 
> Можете немного прояснить в чём его убогость, и что за фичи в этом клиенте?

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено vitalif , 07-Мрт-17 10:41 
>> Можете немного прояснить в чём его убогость, и что за фичи в этом клиенте?
> а вы запустите штатный консольный клиент postgresql и больше возвращаться на mysql
> не захотите ;)

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

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


"Представлен usql, универсальный интерфейс командной строки д..."
Отправлено лютый жабист__ , 06-Мрт-17 05:34 
С одной стороны, psql круче всех на голову, особенно ораклового поделия.

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

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