В этой статье я представлю SQLShell и покажу, шаг за шагом, как его установить и начать использовать с MySQL. Я также расскажу о возможностях использования этого с технологиями NoSQL, такими как HBase, MongoDB, Hive, CouchDB, Redis и Google BigQuery.
SQLShell — это кросс-платформенный инструмент командной строки для SQL, похожий на psql для PostgreSQL или инструмент командной строки mysql для MySQL.
Зачем использовать это?
Если вы уже используете только один инструмент командной строки, такой как psql в PostgreSQL или инструмент MySQL для MySQL , и вам это не нужно. Если вы обнаружите, что прыгаете между несколькими из этих инструментов и хотите использовать общие функциональные возможности, или вы являетесь поклонником многих технологий NoSQL, то за этим стоит следить.
Поддержка драйверов JDBC
SQLShell встроен в Scala . Scala — это масштабируемый язык программирования, который компилируется в байт-код Java, может работать на JVM и может использоваться вместе с кодом Java. Поэтому SQLShell может взаимодействовать с любой базой данных, для которой есть драйвер JDBC (Java Database Connectivity). Encase вы не знаете, их много.
Доступны драйверы JDBC
Существует несколько драйверов JDBC для многих технологий NoSQL, но ни одна из них пока не реализует JDBC достаточно полно для SQLShell .
Что следует отметить в недавнем выпуске Google BigQuery (часть Google Storage ), так это то, что, хотя у них нет драйвера JDBC, они все же внутренне используют sqlcmd с BigQuery. Sqlcmd также создан Брайаном М. Клэппером на Clapper.org , но он прекратил разработку в пользу нового SQLShell. Поэтому я думаю, что есть большая вероятность, что Google может вскоре разработать драйвер JDBC, совместимый с SQLShell. Тем не менее, Google любит Python, а sqlcmd написан на Python.
Брайан М. Клэппер, автор SQLShell, пишет о переходе с Python на Scala в руководстве пользователя SQLShell .
SQLShell — это инструмент командной строки SQL, по своей сути похожий на такие инструменты, как Oracle SQL Plus, команда PostgreSQL psql и инструмент MySQL mysql.
SQLShell — это переписанный Scala мой инструмент Python sqlcmd (переписан потому, что, как оказалось, JDBC более последовательный и переносимый, чем Python DB API).
Установка SQLShell
Вы можете скачать предварительно скомпилированный установочный JAR-файл для SQLShell или скомпилировать двоичный файл самостоятельно . Рекомендуется загрузить JAR, и я скачал версию 0.7.1
curl -O http://cloud.github.com/downloads/bmc/sqlshell/sqlshell-0.7.1-install.jar
Запуск этого установщика можно выполнить с помощью команды java , которая запустит графический установщик. Графический установщик использует IzPack , который является кроссплатформенной установочной средой . Поэтому, хотя я использую Mac OS X, у вас не должно возникнуть проблем с установкой в Windows или Linux.
java -jar sqlshell-0.7.1-install.jar
Первое, что вы видите, если все идет хорошо, это подсказка языка. Я говорю по-английски.
После этого вы увидите экран приветствия, затем страницу вступления и информации, а затем страницу лицензии. Обязательно внимательно прочитайте лицензию, особенно ту часть, которая касается «вашего первенца».
Вот что вы увидите на заставке.
Когда вы дойдете до конца, вы увидите следующее сообщение …
Вы успешно установили SQLShell.
Для вашего удобства в
каталоге «bin» в каталоге «/Applications/clapper.org/sqlshell» имеется сценарий оболочки командной строки .
Это говорит вам, где установлен sqlshell. Под этим каталогом находится каталог bin , который содержит sqlshell . Это инструмент командной строки, и, поскольку мы будем часто его использовать, я добавлю путь к этому каталогу bin в мой PATH.
echo 'export PATH=$PATH:/Applications/clapper.org/sqlshell/bin' >> ~/.profile source ~/.profile which sqlshell || echo "Not found in path" # This tests that it's found in your PATH
Мы можем увидеть, какие параметры он ожидает, запустив sqlshell с аргументом –help .
sqlshell --help SQLShell, version 0.7.1 (2010/11/10 17:27:55) Usage: sqlshell [OPTIONS] db [@file] OPTIONS -? -h --help Show this usage message. -V --version Show version and exit. -c config_file --config config_file Specify configuration file. Defaults to: /Users/phil/.sqlshell/config -n --no-ansi --noansi Disable the use of ANSI terminal sequences. This option just sets the initial value for this setting. The value can be changed later from within SQLShell itself. -r lib_name --readline lib_name Specify readline libraries to use. Legal values: editline, getline, gnu, jline, simple. (May be specified multiple times.) -s --stack Show all exception stack traces. -v --verbose Enable various verbose messages. This option just sets the initial verbosity value. The value can be changed later from within SQLShell itself. PARAMETERS db Name of database to which to connect, or an on-the-fly database specification, of the form: driver,url,[user[,password]] If the name of a database is specified, SQLShellwill look in the configuration file for the corresponding connection parameters. If a database specification is used, the specification must one argument. The driver can be a full driver class name, or a driver alias from the configuration file. The user and password are optional, since some databases (like SQLite) don't require them at all. @file Path of file of commands to run
SQLShell с MySQL
Установите драйвер JDBC MySQL
Загрузите драйвер с сайта MySQL .
curl -O <a href="http://www.mysql.com/downloads/connector/j/">http://mysql.mirror.iweb.ca/Downloads/Connector-J/mysql-connector-java-5.1.14.tar.gz</a> tar xvzf mysql-connector-java-5.1.14.tar.gz cd mysql-connector-java-5.1.14 cp mysql-connector-java-5.1.14-bin.jar /Applications/clapper.org/sqlshell/lib/
Выше мы скопировали MySQL-разъем-Java-5.1.14-bin.jar файл SQLShell в Lib . SQLShell загрузит все файлы JAR, найденные в этом каталоге, при запуске, а затем будет ссылаться на них по имени пакета и класса. Мы будем использовать имя класса драйвера MySQL для настройки псевдонима «mysql» в конфигурации SQLShell.
Чтобы настроить псевдоним «mysql», мы отредактируем файл конфигурации по умолчанию ~ / .sqlshell / config , которого в данный момент не существует.
mkdir ~/.sqlshell vim ~/.sqlshell/config # I use vim to edit files
Добавьте следующую конфигурацию…
[drivers] mysql = com.mysql.jdbc.Driver
Подключитесь к MySQL с помощью SQLShell
Формат строки подключения для драйвера MySQL JDBC должен быть
jdbc:mysql://[host][,failoverhost...][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
Я просто собираюсь подключиться к локальной базе данных mysql и посмотреть на предварительно установленную базу данных MySQL под названием «test». У вас должна быть та же база данных, если вы не удалили ее.
sqlshell mysql,jdbc:mysql://localhost/test?user=root
SQLShell, version 0.7.1 (2010/11/10 17:27:55) Copyright (c) 2009-2010 Brian M. Clapper Using JLine Type "help" for help. Type ".about" for more information. sqlshell>
Хорошо, мы подключены к MySQL и можем запустить несколько запросов.
Мы можем видеть команды, которые мы можем запустить, используя команду help .
sqlshell> help Help is available for the following commands: ------------------------------------------------------------------------------- .about .capture .desc .echo .run .set .show alter begin commit create delete drop exit help history insert r rollback select update
Давайте посмотрим, какие базы данных у нас есть …
sqlshell> show databases; Execution time: 0.26 seconds Retrieval time: 0.21 seconds 2 rows returned. SCHEMA_NAME ------------------ information_schema test sqlshell>
Мы можем создать новую базу данных.
sqlshell> create database sqlshell_test; 1 row affected. Execution time: 0.5 seconds
SQLShell полностью передает операторы SQL в базу данных, поэтому вы можете использовать любые команды, которые понимает ваша база данных
Вывод
Первоначальная цель этого блога состояла в том, чтобы продемонстрировать SQLShell с базой данных NoSQL, но, к сожалению, мне не удалось найти драйвер JDBC, в котором реализованы все функции, необходимые для SQLShell. Я надеюсь, что разработка таких драйверов будет продолжена, так как было бы хорошо иметь стандартный интерфейс для всех этих технологий NoSQL непосредственно из командной строки. Я с нетерпением жду возможности увидеть, как SQLShell и эти JDBC развиваются со временем.