【mssql-tools】sqlcmdとbcpのインストール

【mssql-tools】sqlcmdとbcpのインストール ツール

「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のサーバー(データベース)に接続できます。

そして、名前の通りにコマンドで動きます。
次のような立ち位置のツールだと思えば、理解しやすいかもしれません。

データベースコマンドラインツール
PostgreSQLpsql
MySQLmysql
MariaDBmysql・mariadb
SQL Serversqlcmd

bcp

bcpは、bulk copy programの略称となります。
つまり、bcpはデータのインポート・エクスポートが可能なツールのことです。

sqlcmdと同じように、他のデータベースと比較して表してみましょう。

データベースコマンドラインツール
PostgreSQLpg_dump
MySQLmysqldump
MariaDBmysqldump
SQL Serverbcp

まとめ

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の動作確認を説明しました。

タイトルとURLをコピーしました