Linux用 ODBC ドライバーのインストールおよび構成

Linuxは、 ODBC ベースのクライアントアプリケーションをSnowflakeに接続するために、名前付きデータソース(DSNs)を使用します。Snowflakeクライアントリポジトリで提供される TGZ ファイル、 RPM パッケージ、または DEB パッケージを使用して、 ODBC ドライバーをインストールすることを選択できます。

このトピックの内容:

前提条件

オペレーティングシステム

Snowflakeクライアントでサポートされているオペレーティングシステムのリストについては、 オペレーティングシステムのサポート をご参照ください。

ドライバーマネージャー: iODBC または unixODBC

Snowflakeおよび ODBC ドライバー間の通信を管理するには、ドライバーマネージャーが必要です。ドライバーは、ドライバーマネージャーとして iODBC または unixODBC の使用をサポートしています。

iODBC

CentOS に sudo として iODBC がインストールされていない場合、次のコマンドを実行します。

$ yum install libiodbc

unixODBC

unixODBC ドライバのインストール、構成、およびテストに使用される odbcinst および isql コマンドラインユーティリティを提供します。unixODBC がインストールされているかどうかを確認するには、次のコマンドを実行します。

$ which odbcinst

$ which isql

unixODBC がインストールされていない場合、

  1. sudo として、次のコマンドを実行します。

    $ yum search unixODBC
    
    $ yum install unixODBC.x86_64
    
  2. odbcinst.ini および odbc.ini ファイルが配置されると予想される odbcinst のディレクトリを確認します。

    $ odbcinst -j
    

    場所は /etc である必要があります。

ステップ1:パッケージ署名を確認する(RPM または DEB のみ)--- オプション

注釈

TGZ ファイルを使用してODBC ドライバーをインストールする場合は、このステップをスキップしてください。

RPM または DEB パッケージを使用して ODBC ドライバーをインストールする際、インストール前にパッケージ署名を確認する場合は、次のタスクを実行します。

1.1:最新のSnowflake公開キーをダウンロードおよびインポートする

公開キーサーバーからのキーのダウンロードおよびインポートには、

$ gpg --keyserver hkp://keys.gnupg.net --recv-keys EC218558EABB25A1

注釈

ODBC ドライバーバージョン 2.18.1 以前を再インストールする場合は、 EC218558EABB25A1 ではなく GPG キー ID 93DB296A69BE019A を使用します。

1.2: RPM または DEB ドライバーパッケージをダウンロードする

Snowflake Client Repositoryからパッケージをダウンロードします。詳細については、 ODBC ドライバーのダウンロード をご参照ください。

1.3: RPM または DEB ドライバーパッケージの署名を確認する

RPM パッケージ署名

  1. キーが正常にインポートされたことを確認します。

    $ gpg --list-keys
    

    コマンドはSnowflakeキーを表示する必要があります。

  2. 署名を確認します。

    $ rpm -K snowflake-odbc-<version>.x86_64.rpm
    

DEB パッケージ署名

  1. パッケージ署名確認ツールをインストールします。

    $ sudo apt-get install debsig-verify
    
  2. 公開キーをキーリングにインポートします。

    $ mkdir /usr/share/debsig/keyrings/EC218558EABB25A1
    $ gpg --no-default-keyring --keyring /usr/share/debsig/keyrings/EC218558EABB25A1/debsig.gpg --import snowflakeKey.asc

    注釈

    ODBC ドライバーバージョン 2.18.1 以前を再インストールする場合は、 EC218558EABB25A1 ではなく GPG キー ID 93DB296A69BE019A を使用します。

  3. キーのポリシーを構成します。詳細については、 /usr/share/doc/debsig-verify をご参照ください。ポリシーは次のディレクトリに保存する必要があります。

    /etc/debsig/policies/EC218558EABB25A1

    ポリシーを <ポリシー名>.pol という名前のファイルに保存します。 ポリシー名 は、ポリシーの名前です。ポリシー名には、任意のテキスト文字列を使用できますが、文字列に空白スペースを含めることはできません。

    サンプルポリシーファイルを次に示します。

    <?xml version="1.0"?>
    <!DOCTYPE Policy SYSTEM "http://www.debian.org/debsig/1.0/policy.dtd">
    <Policy xmlns="http://www.debian.org/debsig/1.0/">
    <Origin Name="Snowflake Computing" id="EC218558EABB25A1"
    Description="Snowflake ODBC Driver DEB package"/>
    
    <Selection>
    <Required Type="origin" File="debsig.gpg" id="EC218558EABB25A1"/>
    </Selection>
    
    <Verification MinOptional="0">
    <Required Type="origin" File="debsig.gpg" id="EC218558EABB25A1"/>
    </Verification>
    
    </Policy>
  4. 署名を確認します。

    $ sudo debsig-verify snowflake-odbc-<version>.x86_64.deb
    

注釈

デフォルトでは、dpkgパッケージ署名確認ツールは、パッケージのインストール時に署名をチェックしません。dpkgを実行するたびに署名を確認する場合は、 /etc/dpkg/dpkg.cfg ファイルの --no-debsig 行を削除します。

1.4:古いSnowflakeの公開キーを削除する --- オプション

ローカル環境には複数の GPG キーを含めることができます。ただし、セキュリティ上の理由から、Snowflakeは定期的に公開 GPG キーをローテーションします。ベストプラクティスとして、最新の署名済みパッケージで最新のキーが機能することを確認した後、既存の公開キーを削除することをお勧めします。

キーを削除するには、

$ gpg --delete-key "Snowflake Computing"

ステップ2: ODBC ドライバーをインストールする

配布パッケージのいずれかを使用してドライバーをインストールします。

  • TGZ (.GZIPを使用して圧縮されたTAR ファイル)

  • RPM

  • DEB

TGZ ファイルのインストール

TGZ ファイルを使用してLinux用Snowflake ODBC ドライバーをインストールするには、

  1. Snowflakeクライアントリポリトジからファイルをダウンロードします。詳細については、 ODBC ドライバーのダウンロード をご参照ください。

  2. ダウンロードしたファイル(snowflake_linux_x8664_odbc-バージョン.tgz)を作業ディレクトリにコピーします。

  3. ファイルを解凍します。

    $ gunzip snowflake_linux_x8664_odbc-<version>.tgz
    
  4. .tarファイルからファイルを抽出します。

    $ tar -xvf snowflake_linux_x8664_odbc-<version>.tar
    
  5. 結果の snowflake_odbc フォルダーを、ドライバーをインストールするディレクトリにコピーします。このディレクトリをメモします。後の手順で場所が必要になります。

RPM パッケージのインストール

注釈

RPM パッケージには、ドライバーマネージャーとして unixODBC が必要です。

RPM パッケージを使用してLinux用Snowflake ODBC ドライバーをインストールするには、 オプションでパッケージ署名 を確認した後に、次のコマンドを実行します。

$ yum install snowflake-odbc-<version>.x86_64.rpm

注釈

インストールディレクトリは /usr/lib64/snowflake/odbc/ です。後の手順で場所が必要になります。

DEB パッケージのインストール

注釈

DEB パッケージには、ドライバーマネージャーとして unixODBC が必要です。

DEB パッケージを使用してLinux用Snowflake ODBC ドライバーをインストールするには、 オプションでパッケージ署名 を確認した後、次のコマンドを実行します。

$ sudo dpkg -i snowflake-odbc-<version>.x86_64.deb

パッケージマネージャーに必要な依存関係がインストールされていない場合、コマンドは失敗する可能性があります。その場合は、今すぐそれらをインストールしてください。

$ sudo apt-get install -f

注釈

インストールディレクトリは /usr/lib/snowflake/odbc/ です。後の手順で場所が必要になります。

ステップ3:環境を構成する(TGZ のみ)

注釈

RPM または DEB パッケージファイルを使用して ODBC ドライバーをインストールした場合は、このステップをスキップしてください。

TGZ ファイルを使用してインストールした場合は、インストールされたドライバーマネージャー( iODBC または unixODBCのいずれか)を使用して環境を構成します。

iODBC で構成

ターミナルウィンドウで、 snowflake_odbc ディレクトリに移動し、次のコマンドを実行してSnowflake ODBCをインストールします。

$ ./iodbc_setup.sh

このスクリプトは、次のステップを完了します。

  • 1つのSnowflake接続をシステムレベルの /etc/odbc.ini ファイルに追加します。

  • Snowflakeドライバー情報をシステムレベルの /etc/odbcinst.ini ファイルに追加します。

  • Snowflake ODBC ドライバーに必要な、すべての証明機関(CA)の証明書をシステムレベルの simba.snowflake.ini ファイルに追加します。

iodbc_setup.sh を実行すると、環境変数を設定する必要がなくなります。

または、Snowflakeでシステム構成を変更したくない場合は、シェル構成ファイルに次の環境変数を追加します(例: .profile.bash_profile)。

  • ODBCINI = <パス>/conf/odbc.ini

  • ODBCINSTINI = <パス>/conf/odbcinst.ini

パス は、 snowflake_odbc ディレクトリの場所です。システムで他の ODBC ドライバーを構成し、次のステップでSnowflake ODBC エントリを既存の odbc.ini および odbcinst.ini ファイルに追加する予定がある場合は、 ODBCINI および ODBCINSTINI がそれらのファイルの場所をポイントするようにします。

unixODBC で構成

ターミナルウィンドウで、 snowflake_odbc ディレクトリに移動し、次のコマンドを実行してSnowflake ODBCをインストールします。

$ ./unixodbc_setup.sh

このスクリプトは、次のステップを完了します。

  • Snowflake接続をシステムレベルの /etc/odbc.ini ファイルに追加します。

  • Snowflakeドライバー情報をシステムレベルの /etc/odbcinst.ini ファイルに追加します。

  • Snowflake ODBC ドライバーに必要な、すべての証明機関(CA)の証明書をシステムレベルの simba.snowflake.ini ファイルに追加します。

unixodbc_setup.sh を実行すると、環境変数を設定する必要がなくなります。

または、Snowflakeがシステム構成を変更したくない場合は、シェル構成ファイル(例: .profile.bash_profile)に次の環境変数を追加します。

  • ODBCSYSINI = <パス>/conf/

パス は、 snowflake_odbc ディレクトリの場所です。システムで他の ODBC ドライバーを構成し、次のステップでSnowflake ODBC エントリを既存の odbc.ini および odbcinst.ini ファイルに追加する予定がある場合は、 ODBCSYSINI がそれらのファイルの場所をポイントするようにします。

ステップ4: ODBC ドライバーを構成する

ODBC ドライバーを構成するには、次のファイルにエントリを追加する必要があります。

  • <パス>/lib/simba.snowflake.ini

  • /etc/odbcinst.ini (または、環境変数を使用している場合は <パス>/conf/odbc.ini

  • /etc/odbc.ini (または、環境変数を使用している場合は <パス>/conf/odbcinst.ini

パス は、 snowflake_odbc ディレクトリの場所です。

4.1: simba.snowflake.ini ファイル(ドライバーマネージャーおよびログ)

次のエントリを simba.snowflake.ini ファイルに追加します。

ErrorMessagesPath=<path>/ErrorMessages/
LogPath=/tmp/
ODBCInstLib=<driver_manager_path>
CABundleFile=<path>/lib/cacert.pem
ANSIENCODING=UTF-8

条件:

  • パスsnowflake_odbc ディレクトリの場所です。

  • ドライバーマネージャーパス は、ドライバーマネージャーディレクトリの場所です。

    • iODBC : ODBCInstLib=libiodbcinst.so.2

    • unixODBC : ODBCInstLib=libodbcinst.so

    注釈

    ドライバーマネージャーディレクトリが LD_LIBRARY_PATH 環境変数に含まれていない場合は、ここでドライバーマネージャーライブラリへのフルパスを指定します。

ログパスに対する書き込み権限があることを確認します。

ANSIENCODING パラメーターは、アプリケーションの文字エンコードを指定します。デフォルトは UTF-8 です。このパラメーターは、Snowflakeによる使用に限定されています。お客様は値を変更しないでください。

4.2: odbcinst.ini ファイル(ドライバー登録)

次のエントリを odbcinst.ini ファイルに追加します。

[ODBC Drivers]
SnowflakeDSIIDriver=Installed

[SnowflakeDSIIDriver]
APILevel=1
ConnectFunctions=YYY
Description=Snowflake DSII
Driver=/<path>/lib/libSnowflake.so
DriverODBCVer=03.52
SQLLevel=1

パス は、 snowflake_odbc ディレクトリの場所です。

4.3: odbc.ini ファイル(DSN エントリ)

DSN について、次のエントリを odbc.ini ファイルに追加します。

  • <DSN名> = <ドライバー名> 形式の DSN 名とドライバー名(SnowflakeDSIIDriver)。

  • パラメーター:

    • server などの必要な接続パラメーター。

    • デフォルト roledatabasewarehouse などの追加のオプションパラメーター。

    パラメーターは <パラメーター名> = <値> 形式で指定されます。各 DSN に設定できるパラメーターの詳細については、 ODBC 構成および接続パラメーター をご参照ください。

次の例は、2つのドライバーを含む odbc.ini ファイルを示しています。アカウント xy12345testodbc1 (AWS US 西部地域に位置)およびアカウント yz23456testodbc2 (AWS US 東部地域に位置):

[ODBC Data Sources]
testodbc1 = SnowflakeDSIIDriver
testodbc2 = SnowflakeDSIIDriver


[testodbc1]
Driver      = /usr/jsmith/snowflake_odbc/lib/libSnowflake.so
Description =
server      = xy12345.snowflakecomputing.com
role        = sysadmin


[testodbc2]
Driver      = /usr/jsmith/snowflake_odbc/lib/libSnowflake.so
Description =
server      = yz23456.us-east-1.snowflakecomputing.com
role        = analyst
database    = sales
warehouse   = analysis

次の点に注意してください。

  • testodbc1testodbc2 の両方に既定のロールがあること

  • testodbc2 にも、既定のデータベースとウェアハウスがあること

ステップ5: ODBC ドライバーをテストする

インストールされたドライバーマネージャー(iODBC または unixODBC のいずれか)を使用して、ドライバーをテストします。

iODBC によるテスト

作成した DSNs をテストします。コマンドラインで、次の形式を使用して、 DSN 名、ユーザーログイン名、およびパスワードを指定します。

iodbctest "DSN=<DSN名>;UID=<ユーザー名>;PWD=<パスワード>"

例:

$ iodbctest "DSN=testodbc2;UID=mary;PWD=password"
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0709.0909
Driver: 2.12.70 (Snowflake)

SQL>

unixODBC によるテスト

unixODBC で提供される isql コマンドラインユーティリティを使用して作成した DSNs をテストします。

コマンドラインで、 DSN 名、ユーザーログイン名、およびパスワードを指定します。

例:

$ isql -v testodbc2 mary <password>

Dec 14 22:57:50 INFO  2022078208 Driver::LogVersions: SDK Version: 09.04.09.1013
Dec 14 22:57:50 INFO  2022078208 Driver::LogVersions: DSII Version: 2.12.36
Dec 14 22:57:50 INFO  2022078208 SFConnection::connect: Tracing level: 4

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>