Статьи

SQLShell: инструмент SQL для нескольких баз данных с потенциалом NoSQL

В этой статье я представлю 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

    Установка 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

    После этого вы увидите экран приветствия, затем страницу вступления и информации, а затем страницу лицензии. Обязательно внимательно прочитайте лицензию, особенно ту часть, которая касается «вашего первенца».

    Вот что вы увидите на заставке.

    Начальный экран установщика SQLShell

    Когда вы дойдете до конца, вы увидите следующее сообщение …

    Вы успешно установили 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 развиваются со временем.