「SQL Serverにアクセスしたい」
「SQL Serverのインポート・エクスポートを探している」
「LinuxからコマンドでSQL Serverに接続したい」
このような場合には、mssql-toolsがオススメです。
この記事では、mssql-toolsについて解説しています。
本記事の内容
- mssql-toolsとは?
- mssql-toolsのシステム要件
- mssql-toolsのインストール
- mssql-tools(sqlcmdとbcp)の動作確認
それでは、上記に沿って解説していきます。
mssql-toolsとは?
mssql-toolsとは、SQL Server用のコマンドラインツールをまとめたパッケージのことです。
mssql-toolsには、次のコマンドラインツールが含まれています。
- sqlcmd
- bcp
それぞれを以下で説明します。
sqlcmd
一言で言うと、SQL Serverのクライアントツールです。
sqlcmdにより、SQL Serverのサーバー(データベース)に接続できます。
そして、名前の通りにコマンドで動きます。
次のような立ち位置のツールだと思えば、理解しやすいかもしれません。
データベース | コマンドラインツール |
PostgreSQL | psql |
MySQL | mysql |
MariaDB | mysql・mariadb |
SQL Server | sqlcmd |
bcp
bcpは、bulk copy programの略称となります。
つまり、bcpはデータのインポート・エクスポートが可能なツールのことです。
sqlcmdと同じように、他のデータベースと比較して表してみましょう。
データベース | コマンドラインツール |
PostgreSQL | pg_dump |
MySQL | mysqldump |
MariaDB | mysqldump |
SQL Server | bcp |
まとめ
sqlcmdとbcpは、それぞれWindowsでも利用できます。
しかし、これらを含んだパッケージであるmssql-toolsはSQL Server on Linux専用です。
以上、mssql-toolsについて説明しました。
次は、mssql-toolsのシステム要件を説明します。
mssql-toolsのシステム要件
現時点(2022年7月)におけるmssql-toolsの最新バージョンは、17.10.1.1になります。
mssql-tools 17.10.1.1は、2022年6月にリリースされています。
サポートされているOS・プラットフォームは、以下となります。
- Red Hat Enterprise Linux
- Ubuntu
- SUSE Linux Enterprise Server
- macOS
- Docker
mssql-tools 17.10.1.1は、Ubuntu 20.04 LTSをサポート対象としています。
現状では、Ubuntu 22.04 LTSはサポート対象外ということになります。
あと、もう一つ重要なシステム要件はunixODBCです。
正確には、インストールするのはunixODBCの開発版となります。
パッケージ名で言うと、次のモノです。
プラットフォーム毎に名前が異なります。
- unixodbc-dev
- unixODBC-devel
Ubuntuであれば、unixodbc-devをインストールします。
unixodbc-devは、Ubuntu公式のリポジトリに登録されています。
そのため、Ubuntu 20.04 LTSであれば次のようにパッケージを確認できます。
$ apt info unixodbc-dev Package: unixodbc-dev Version: 2.3.6-0.1build1 Priority: extra Section: devel Source: unixodbc Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Steve Langasek <vorlon@debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 1,810 kB Depends: libodbc1 (= 2.3.6-0.1build1), odbcinst1debian2 (= 2.3.6-0.1build1), libltdl-dev Conflicts: libiodbc2-dev Homepage: http://www.unixodbc.org/ Download-Size: 225 kB APT-Sources: http://archive.ubuntu.com/ubuntu focal/main amd64 Packages Description: ODBC libraries for UNIX (development files) This package contains the development files (headers and libraries) for unixODBC, an implementation of the Open DataBase Connectivity interface for Unix systems. You should not need to install this package unless you intend to develop C language applications which use ODBC, or to compile ODBC-using applications from source.
確認できますが、まだインストールはしません。
最新版のmssql-toolsは、これとは異なるバージョンのunixodbc-devに依存しています。
したがって、mssql-toolsのインストールの際に同時にunixodbc-devもインストールします。
つまり、依存関係があるからインストールしようということです。
以上、mssql-toolsのシステム要件を説明しました。
次は、mssql-toolsのインストールを説明します。
mssql-toolsのインストール
Ubuntuへのmssql-toolsのインストールは、PPAを利用します。
PPAとは、Ubuntu公式以外のリポジトリのことです。
ただし、今回利用するPPAはマイクロソフトが公開しているモノになります。
つまり、マイクロソフト公認のリポジトリです。
だから、安心して利用しましょう。
そのためには、最初にGPG キーをインポートします。
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
次にリポジトリの登録です。
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
完了したら、ファイルを確認しておきましょう。
$ cat /etc/apt/sources.list.d/msprod.list deb [arch=amd64,armhf,arm64] https://packages.microsoft.com/ubuntu/20.04/prod focal main
ここまで確認できれば、パッケージ更新を実施します。
sudo apt-get update
完了したら、mssql-toolsの存在を確認できるようになっています。
$ apt info mssql-tools Package: mssql-tools Version: 17.10.1.1-1 Section: database Maintainer: Microsoft SQL Tools Team <mssql-tools@microsoft.com> Installed-Size: 不明 Depends: libc6 (>= 2.19), libstdc++6 (>= 4.8.2), libkrb5-3, openssl, debconf (>= 0.5), msodbcsql17 (>= 17.3.0.0) Download-Size: 211 kB APT-Sources: https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages Description: Tools for Microsoft(R) SQL Server(R) This package provides tools for Microsoft(R) SQL Server(R).
あと、unixodbc-devを再度確認します。
$ apt info unixodbc-dev Package: unixodbc-dev Version: 2.3.7 Priority: extra Section: devel Source: unixodbc Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Steve Langasek <vorlon@debian.org> Installed-Size: 1,739 kB Depends: unixodbc (= 2.3.7), odbcinst1debian2 (= 2.3.7), libltdl3-dev Conflicts: libiodbc2-dev, remembrance-agent (<< 2.11-4) Homepage: http://www.unixodbc.org/ Download-Size: 37.1 kB APT-Sources: https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages Description: ODBC libraries for UNIX (development files) This package contains the development files (headers and libraries) for unixODBC, an implementation of the Open DataBase Connectivity interface for Unix systems. You should not need to install this package unless you intend to develop C language applications which use ODBC, or to compile ODBC-using applications from source.
Ubuntu公式のunixodbc-devのバージョンでは、なくなりました。
mssql-toolsが依存するバージョンに上書きされた感じですね。
それぞれの存在を確認できたら、次のコマンドでインストールします。
sudo apt install -y mssql-tools unixodbc-dev
途中で次のような画面が表示されます。
SQL ServerのODBCに関する規約の同意画面です。
「はい」を選択してEnter。
次は、mssql-toolsに関する規約の同意画面になります。
「はい」を選択してEnter。
それ以降は、処理が終わるまで待ちます。
以上、mssql-toolsのインストールを説明しました。
次は、mssql-toolsの動作確認を説明します。
mssql-toolsの動作確認
mssql-toolsには、次のコマンドラインツールが含まれていました。
- sqlcmd
- bcp
mssql-toolsの動作確認とは、これらのコマンドの動作確認を意味します。
しかし、次のようにコマンドを実行してもエラーが出てしまいます。
$ sqlcmd sqlcmd: コマンドが見つかりません
なぜなら、これらのコマンドにパス(PATH)が通っていないからです。
これでは不便なので、パスを通しましょう。
コマンドのある場所は、「/opt/mssql-tools/bin」です。
$ ls /opt/mssql-tools/bin bcp sqlcmd
したがって、bashシェルでPATH環境変数に「/opt/mssql-tools/bin/」 を追加します。
追加するファイルは、次のどちらでもお好きな方をどうぞ。
- ~/.bash_profile
- ~/.bashrc
個人的には、対話型/非ログイン セッション用の「~/.bashrc」に追加します。
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc
反映できたら、それぞれのヘルプを表示してみましょう。
sqlcmd
$ sqlcmd -? Microsoft (R) SQL Server Command Line Tool Version 17.10.0001.1 Linux Copyright (C) 2017 Microsoft Corporation. All rights reserved. usage: sqlcmd [-U login id] [-P password] [-S server or Dsn if -D is provided] [-H hostname] [-E trusted connection] [-N Encrypt Connection][-C Trust Server Certificate] [-d use database name] [-l login timeout] [-t query timeout] [-h headers] [-s colseparator] [-w screen width] [-a packetsize] [-e echo input] [-I Enable Quoted Identifiers] [-c cmdend] [-q "cmdline query"] [-Q "cmdline query" and exit] [-m errorlevel] [-V severitylevel] [-W remove trailing spaces] [-u unicode output] [-r[0|1] msgs to stderr] [-i inputfile] [-o outputfile] [-k[1|2] remove[replace] control characters] [-y variable length type display width] [-Y fixed length type display width] [-p[1] print statistics[colon format]] [-R use client regional setting] [-K application intent] [-M multisubnet failover] [-b On error batch abort] [-D Dsn flag, indicate -S is Dsn] [-X[1] disable commands, startup script, environment variables [and exit]] [-x disable variable substitution] [-g enable column encryption] [-G use Azure Active Directory for authentication] [-? show syntax summary]
sqlcmdには、バージョン確認の「-v」が用意されていません。
そのため、ヘルプでバージョン確認を行います。
bcp
$ bcp -? usage: bcp {dbtable | query} {in | out | queryout | format} datafile [-m maxerrors] [-f formatfile] [-e errfile] [-F firstrow] [-L lastrow] [-b batchsize] [-n native type] [-c character type] [-w wide character type] [-N keep non-text native] [-q quoted identifier] [-t field terminator] [-r row terminator] [-a packetsize] [-K application intent] [-S server name or DSN if -D provided] [-D treat -S as DSN] [-U username] [-P password or tokenfile] [-T trusted connection] [-v version] [-R regional enable] [-k keep null values] [-E keep identity values][-G Azure Active Directory Authentication] [-h "load hints"] [-d database name]
bcpには、「-v」が用意されています。
試してみましょう。
$ bcp -v BCP - Bulk Copy Program for Microsoft SQL Server. Copyright (C) Microsoft Corporation. All Rights Reserved. Version: 17.10.0001.1
とりあえず、sqlcmdとbcpを起動させることはできました。
mssql-toolsの動作確認は、ここまでとしておきます。
以上、mssql-toolsの動作確認を説明しました。