В рамках проекта 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
Полезная вещь, давно мечтал об интерфейсе psql для MySQL.
надо попробовать
> Особенностью usql является использование схемы dburl для задания параметров подключения к БД, напоминающей URL (например, "pg://user:pass@localhost/dbname" или "file:dbname.sqlite3")ВОТ ЭТО ЧУДЕСА!
ради этого конечно стоит сразу устанавливать :-D
> ВОТ ЭТО ЧУДЕСА!это - нормально (как, блин, по-твоему, еще должно выглядеть подключение к БД, когда возможных протоколов несколько?)
Ненормально что в деме автору понадобилось для mysql дополнительно дергать use booktest - грокаю явную usage inconsistence, причем в совершенно элементарном месте. И еще одну - в том что для всех почему-то "тип_бд://user:pass@", а у sqlite тип вдруг оказывается в жопе.
Если автора такие мелочи не смутили - есть подозрение, что еще много что его не смутило.
у скулайте в жопе тип, потому что это расширение файла
а, то есть у них file намертво и навеки прибит к sqlite? (ну, я надеюсь, что хоть так, а не автоугадав engine по расширению)
> как, блин, по-твоему, еще должно выглядеть подключение к БД, когда возможных протоколов несколько?Делаешь man 2 connect, затем man 2 recv с флагом MSG_PEEK и база тебе расскажет кто она, какой ей протокол нужен и все остальное, что тебе нужно знать (тебе нужно будет распознать один из вариантов, которых меньше, чем пальцев на одной руке). Более того, это, скорее всего, понадобиться, когда строка подключения будет "odbc://user:pass@...". Впрочем, если это очередной Go-велосипед школьника, то он до этого не дойдет и бросит раньше. Однако, я верю в людей, даже если они пишут на Go под лицензией MIT.
только сами команды в sql будут различаться, так что смысла нет.
Смысла много, если посмотреть на убогость mysql-ного клиента.:(
Можете немного прояснить в чём его убогость, и что за фичи в этом клиенте?
Например, крайне убогое (на фоне psql) автодополнение и выпадание по Ctrl+C.Последнее убого тем что psql (так же как и привычный shell) по Ctrl+С позволяет сбросить набираемый длинный запрос когда курсор находится в любом его месте и начать листать историю с последней команды. В mysql же Ctrl+C выбросит из клиента, а если его не нажать, то придётся затирать всю команду целиком (или дополнять её \c) после чего вы останетесь не на самой последней позиции в истории, а на месте затёртой команды. Что далеко не всегда удобно.
Ещё веселее бывает, если вы запустили запрос и понимаете что он выполняется дольше чем предполагалось и не очень-то он уже и нужен, то нажимаете Ctrl+C что бы прервать его, но иногда в этот момент запрос завершается сам, ваш Ctrl+C уходит в mysql клиента и обрывает вашу сессию. Что опять-таки совершенно неудобно.
Вообще, один хоткей на два совершенно разных действия - прерывание запроса и прерывание работы клиента есть на мой взгляд чистейший идиотизм.
По первому пункту> по Ctrl+С позволяет сбросить набираемый
Посмотри, работает ли Ctrl+u (emacs-овское и readline-овское сочетание, удаляет всё слева от курсора). Переместить курсор в крайнее правое положение: Ctrl+e. Соответственно Ctrl+e , Ctrl+u очищает строку целиком, без перевода строки и без посылки какой бы то нибыло команды интерпретатору. Потому что иногда, даже в bash, Ctrl+c работает слишком инвазивно, я лично привык использовать Ctrl+e , Ctrl+u в разных cli. Интересно, работает ли это в cli мускула.
> Интересно, работает ли это в cli мускула.mysql используется readline или libedit,
Если скомпилен с readline, то работает.
> Посмотри, работает ли Ctrl+uДело не в том, чем заменить. Просто такие вещи входят в привычку и приходится трахаться каждый раз с особенностями того или иного клиента.
> Например, крайне убогое (на фоне psql) автодополнение и выпадание по Ctrl+C.И как вам в 2012м?
https://bugs.mysql.com/bug.php?id=1989Верните машину времени на место.
>> Например, крайне убогое (на фоне psql) автодополнение и выпадание по Ctrl+C.
> И как вам в 2012м?так же как в 2003м.
> https://bugs.mysql.com/bug.php?id=1989баг закрыт без попытки что-либо с этим сделать.
В 2012м последний раз кто-то пытался уговорить его переоткрыть - безрезультатно.
отпишите баг репорт и точные шаги чтобы воспроизвести:
mysql> select sleep(5);
^C^C -- query aborted
+----------+
| sleep(5) |
+----------+
+----------+
1 row in set (0.50 sec)mysql> ^C^C^C
на 5.7.14 не воспроизводится. Уговаривать не надо, просто дайте способ разработчикам повторить проблему.
Хы-хы, будет ли эта поделка нормально автодополнять - большой вопросПривычка сбрасывать текст запроса по ctrl-c довольно дурацкая, лучше ее поменяй)
Я делаю так - home, добавляю в начало # и жму ентер. Это либо получается коммент, либо синтакс еррор. Но что самое важное, текст остается в истории для дальнейшей правки
Зачем люди вообще используют mysql, если есть postgres?
> Зачем люди вообще используют mysql, если есть postgres?обычно после первой или второй встречи с vacuum full - в зависимости от степени тяжести травм, полученных после первой.
Странные у Вас встречи...За дясятилетия никаких проблем, в разных проектах.
Смотря кто. Недовеб-программисты - потому что ничего другого не знают.Но бывают и объективные причины: https://eng.uber.com/mysql-migration/
известный не кошерный пример - простое обоснование "почему я ХОЧУ mysql, а вы мне pg дали"
> Но бывают и объективные причины: https://eng.uber.com/mysql-migration/Спасибо, очень толковая статья
Ну вот
http://postgresql.ru.net/node/215495Мало что ли?
неужто можно наконец-то будет выбросить этот чёртов sqlplus?!
Откройте для себя SQLcl - это утилита командной из SQL Developer от Oracle
Если не нравится ява - сделайте alias sqlplus='rlwrap sqlplus 'Никогда не любил универсальные утилиты. Вечно в них что-то не поддерживается или поддерживается не так. А уж родной psql от постгри ни на что не променяю ни за какие коврижки. Лучше консольного клиента не видел.
Невелика разница.В Орякеле получить аналог \l - это поубивать всех индусов апстену.
Про \dt и проч. даже мечтать не придходится.
Я думаю, что у этой поделки функционал поменьше, нет? :) Скорее всего, через него только простые запросы типа select * from table можно делать.
> Я думаю, что у этой поделки функционал поменьше, нет? :) Скорее всего,
> через него только простые запросы типа select * from table можно
> делать.У sql флюс тоже все оч грустно, оракл - худшая субд))
> неужто можно наконец-то будет выбросить этот чёртов sqlplus?!Гы, я в консоли виесто него извращался и DBI::Shell юзал)))
Что насчёт подключения и авторизации через unix-сокет? Ssl сертификат?
Ура! Новость о проге в 400 строк.
Это Go, он такой!
Толку только с такой утилиты на реальной БД с тысячами таблиц и десятками (если не сотнями) полей в каждой - никакого.
Необходим горизонатальный скроллинг хотя бы. Да и вообще, интерактивная работа с рекордсетом. А лучше даже с несколькими. И автозавершение/перебор по именам объектов в БД.
> Особенностью usql является использование схемы dburl
> Provides a standardized way of processing database connection strings in the form of a URL for Go
> 11 commits
> 1 contributorОтличный стандарт.
> Можете немного прояснить в чём его убогость, и что за фичи в этом клиенте?а вы запустите штатный консольный клиент postgresql и больше возвращаться на mysql не захотите ;)
>> Можете немного прояснить в чём его убогость, и что за фичи в этом клиенте?
> а вы запустите штатный консольный клиент postgresql и больше возвращаться на mysql
> не захотите ;)Не замечаю такого, единственное что лучше это дополнение, но мне некритично
А вот то что \d и т.п это КОМАНДЫ psql, а не SQL запросы - очень неудобно. Потом когда надо определение таблицы программно вытащить, приходится его по кусочкам из каталога собирать. А в mysql просто такой же запрос делаешь SHOW CREATE TABLE и все...
С одной стороны, psql круче всех на голову, особенно ораклового поделия.С другой стороны, всё-равно на даже средних базах уже неудобно работать даже в psql. Гораздо удобнее когда у тебя на экране все 50++ твои основных команды и ты их запускаешь по ctrl+enter, а не мучительно ищешь в истории или не дай божЕ, набираешь, копипастишь. Графический показометр схемы итд итп
В общем, увы, но нинужно.