SnowflakeのCLIクライアント「SnowSQL」をLinuxにインストールしてみた

2020.07.03

こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。

SnowflakeにはSnowSQLというCLIクライアントがあります。このCLIクライアントでは、SnowflakeへのSQLクエリの実行やデータのロード、アンロードを含むDDLおよびDMLを実行することができます。

今回は、このSnowSQLをLinux(Windows Sybsystem for LinuxのUbuntu)にインストールしてみたいと思います。インストール方法は下記のドキュメントに記載されているので、こちらに沿ってやってみます。

前提条件

環境はWindows10のWSL(Ubuntu 18.04)となります。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

インストーラのダウンロード

Linux向けには、パッチの自動アップグレードが有効なインストーラと、バージョンを固定して自動アップグレードをしないRPMの2つがあるようです。

今回はバージョン固定は気にしないので、パッチの自動アップグレードが有効なインストーラをダウンロードしたいと思います。

ダウンロードは、SnowflakeのRepositoryから行えます。

Snowflake Repository

今回は2020/07/03時点で最新バージョンとなる1.2.7を対象としたいので、下記コマンドをWSLから実行します。

$ cd /tmp
$ curl -O https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/1.2/linux_x86_64/snowsql-1.2.7-linux_x86_64.bash

これでインストールの準備ができました。

インストールの実行

では早速インストールしていきます。bashコマンドでインストーラを起動します。

$ bash snowsql-1.2.7-linux_x86_64.bash

まず最初にインストール先を聞かれます。今回は~/binで構わないので、そのままEnterで進めます。

**********************************************************************
 Installing SnowSQL, Snowflake CLI.
**********************************************************************

Specify the directory in which the SnowSQL components will be installed. [~/bin]

実行ディレクトリをPATHに含めるか聞かれるので、これはyとします。

Do you want to add /home/ubuntu/bin to PATH in /home/ubuntu/.profile? [y/N] y

インストールが進むので、しばし待ちます。

Updating /home/ubuntu/.profile to have /home/ubuntu/bin in PATH
Open a new terminal session to make the updated PATH take effect.
**********************************************************************
 Congratulations! Follow the steps to connect to Snowflake DB.
**********************************************************************

1. Open a new terminal window.
2. Execute the following command to test your connection:
      snowsql -a <account_name> -u <login_name>

      Enter your password when prompted. Enter !quit to quit the connection.

3. Add your connection information to the ~/.snowsql/config file:
      accountname = <account_name>
                username = <login_name>
                password = <password>

4. Execute the following command to connect to Snowflake:

      snowsql

See the Snowflake documentation <https://docs.snowflake.net/manuals/user-guide/snowsql.html> for more information.

無事にインストールされたようです!

接続テスト

さきほど表示された手順の「2.」に従って接続テストをしてみます。新しくターミナルを開きなおして下記のコマンドでテスト接続します。

$ snowsql -a foo_bar.ap-northeast-1.aws -u foo_bar
Password: Passw0rd!
* SnowSQL * v1.2.7
Type SQL statements or !help
foo_bar#(no warehouse)@(no database).(no schema)>!q
Goodbye!

うまく接続できました。なお切断には!quitコマンド(またはエイリアスの!q)か、Ctrl + dキーで切断できます。

最後に、configファイルを設定してデフォルト接続情報を利用した接続も試してみます。ドキュメントを参考に、下記のようにconfigファイルを設定します。これで、デフォルトの接続設定はconfigファイルの設定を見てくれるようになります。

~/.snowsql/config

[connections]
accountname = foo_bar.ap-northeast-1.aws
username = foo_bar
password = "Passw0rd!"

パスワードを平文で記載しているので、ドキュメントの注意書きにある通り、ファイルのパーミッション設定もしておきます。

$ chmod 700 ~/.snowsql/config

設定ができたので、今度は引数無しでsnowsqlコマンドを実行してみます。

$ snowsql
* SnowSQL * v1.2.7
Type SQL statements or !help
foo_bar#(no warehouse)@(no database).(no schema)>
Goodbye!

想定通り、接続できました!

まとめ

以上、SnowSQLのインストールを試してみました。CLIベースでSnowflakeの操作をしたい際に、うまくSnowSQLを活用していきたいと思います。

どなたかのお役に立てば幸いです。それでは!