Linux用 ODBC ドライバーのインストールおよび構成¶
Linuxは、 ODBC ベースのクライアントアプリケーションをSnowflakeに接続するために、名前付きデータソース(DSNs)を使用します。Snowflakeクライアントリポジトリで提供される TGZ ファイル、 RPM パッケージ、または DEB パッケージを使用して、 ODBC ドライバーをインストールすることを選択できます。
前提条件¶
オペレーティングシステム¶
Snowflakeクライアントでサポートされているオペレーティングシステムのリストについては、 オペレーティングシステムのサポート をご参照ください。
ODBC バージョン 3.0.1より、ドライバーは CentOS 6バージョンをサポートしなくなりました。
ドライバーマネージャー: iODBC または unixODBC¶
Snowflakeおよび ODBC ドライバー間の通信を管理するには、ドライバーマネージャーが必要です。ドライバーは、ドライバーマネージャーとして iODBC または unixODBC の使用をサポートしています。
iODBC¶
CentOS に sudo として iODBC がインストールされていない場合、次のコマンドを実行します。
unixODBC¶
unixODBC provides the odbcinst and isql command-line utilities used to install, configure, and test the driver. To verify whether unixODBC is installed, execute the following commands:
unixODBC がインストールされていない場合、
sudoとして、次のコマンドを実行します。
odbcinst.iniおよびodbc.iniファイルが配置されると予想されるodbcinstのディレクトリを確認します。場所は
/etcである必要があります。
ステップ1: パッケージ署名を確認する(RPM または DEB のみ)--- オプション¶
注釈
yum または TGZ ファイル を使用して ODBC ドライバーをインストールする場合は、このステップをスキップしてください。
RPM または DEB パッケージを使用して ODBC ドライバーをインストールする際、インストール前にパッケージ署名を確認する場合は、次のタスクを実行します。
1.1: 最新のSnowflake公開キーをダウンロードおよびインポートする¶
公開キーサーバーから、使用している ODBC ドライバーのバージョンのSnowflake GPG 公開キーをダウンロードしてインポートします。
バージョン3.6.0以上の場合:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 2A3149C82551A34A
バージョン3.5.0の場合:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 5A125630709DD64B
バージョン2.25.6から3.4.1までの場合:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 630D9F3CAB551AF3
バージョン2.22.1から2.25.5までの場合:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 37C7086698CB005C
バージョン2.18.2から2.22.0までの場合:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys EC218558EABB25A1
バージョン2.18.1以下の場合:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 93DB296A69BE019A
注釈
このコマンドが次のエラーを発生して失敗した場合、
次に、キーサーバーにポート80を使用することを指定します。
1.2: RPM または DEB ドライバーパッケージをダウンロードする¶
Snowflake Client Repositoryからパッケージをダウンロードします。詳細については、 ODBC ドライバーのダウンロード をご参照ください。
1.3: RPM または DEB ドライバーパッケージの署名を確認する¶
RPM パッケージ署名¶
キーが正常にインポートされたことを確認します。
コマンドはSnowflakeキーを表示する必要があります。
署名を確認します。
注釈
rpmにインポートした GPG キーがない場合、コマンドは署名が OK でないことを報告し、NOKEY警告を生成します。これが発生した場合は、次のコマンドを実行して GPG キーをエクスポートし、キーを
rpmにインポートして、署名を再度確認します。<GPG_KEY_ID>は 1.1: 最新のSnowflake公開キーをダウンロードおよびインポートする にインストールしたキーの ID です。
DEB パッケージ署名¶
パッケージ署名確認ツールをインストールします。
公開キーをキーリングにインポートします。
<GPG_KEY_ID>は 1.1: 最新のSnowflake公開キーをダウンロードおよびインポートする にインストールしたキーの ID です。キーのポリシーを構成します。詳細については、
/usr/share/doc/debsig-verifyをご参照ください。ポリシーは次のディレクトリに保存する必要があります。<GPG_KEY_ID>は 1.1: 最新のSnowflake公開キーをダウンロードおよびインポートする にインストールしたキーの ID です。ポリシーを
policy_name.polという名前のファイルに保存します。ここで、policy_nameはポリシーの名前です。ポリシー名には、任意のテキスト文字列を使用できますが、文字列に空白スペースを含めることはできません。ID 2A3149C82551A34A のキーのサンプルポリシーファイルは次のとおりです。
<?xml version="1.0"?> <!DOCTYPE Policy SYSTEM "http://www.debian.org/debsig/1.0/policy.dtd"> <Policy xmlns="https://www.debian.org/debsig/1.0/"> <Origin Name="Snowflake Computing" id="2A3149C82551A34A" Description="Snowflake ODBC Driver DEB package"/> <Selection> <Required Type="origin" File="debsig.gpg" id="2A3149C82551A34A"/> </Selection> <Verification MinOptional="0"> <Required Type="origin" File="debsig.gpg" id="2A3149C82551A34A"/> </Verification> </Policy>
署名を確認します。
注釈
デフォルトでは、dpkgパッケージ署名確認ツールは、パッケージのインストール時に署名をチェックしません。dpkgを実行するたびに署名を確認する場合は、 /etc/dpkg/dpkg.cfg ファイルの --no-debsig 行を削除します。
1.4: 古いSnowflakeの公開キーを削除する --- オプション¶
ローカル環境には複数の GPG キーを含めることができます。ただし、セキュリティ上の理由から、Snowflakeは定期的に公開 GPG キーをローテーションします。ベストプラクティスとして、最新の署名済みパッケージで最新のキーが機能することを確認した後、既存の公開キーを削除することをお勧めします。
キーを削除するには、
ステップ2: ODBC ドライバーをインストールする¶
次のアプローチのいずれかを使用してドライバーをインストールします。
yumを使用したドライバーのダウンロードとインストール¶
ODBC ドライバーのバージョン2.21.1(およびそれ以降のバージョン)では、 yum を使用してドライバーをダウンロードし、インストールできます。
yum を使用してLinux用Snowflake ODBC ドライバーをダウンロードし、インストールするには、
/etc/yum.repos.d/snowflake-odbc.repoという名前のファイルを作成し、次のテキストをファイルに追加します。ここで、
VERSION_NUMBERはドライバーの特定のバージョン番号(例: 3.16.0)であり、GPG_KEY_IDは次のキー IDs のいずれかです。ODBC ドライバーのバージョン
GPG キー ID
3.6.0以上およびそれ以上
2A3149C82551A34A
3.5.0
5A125630709DD64B
2.25.6 から 3.4.1
630D9F3CAB551AF3
2.22.1 から 2.25.5
37C7086698CB005C
上記の設定では、
baseurlとgpgkeyは、Amazon S3の Snowflakeクライアントリポリトジ を指しています。代わりにAzure BLOBでミラーを使用する場合は、ホスト名をhttps://sfc-repo.azure.snowflakecomputing.com/に変更します。次のコマンドを実行して、ドライバーをインストールします。
TGZ ファイルのインストール¶
前にダウンロードした TGZ ファイル を使用してLinux用Snowflake ODBC ドライバーをインストールするには、
ダウンロードしたファイル(
snowflake_linux_x8664_odbc-version.tgz)を作業ディレクトリにコピーします。ファイルを解凍します。
.tarファイルからファイルを抽出します。
結果の
snowflake_odbcフォルダーを、ドライバーをインストールするディレクトリにコピーします。このディレクトリをメモします。後の手順で場所が必要になります。
RPM パッケージのインストール¶
注釈
RPM パッケージには、ドライバーマネージャーとして unixODBC が必要です。
前にダウンロードした RPM パッケージ を使用してLinux用Snowflake ODBC ドライバーをインストールするには、 オプションでパッケージ署名を確認 した後に、次のコマンドを実行します。
注釈
インストールディレクトリは /usr/lib64/snowflake/odbc/ です。後の手順で場所が必要になります。
ドライバーがライブラリを見つけられない場合は、 Unable to locate SQLGetPrivateProfileString function エラーを表示します。この場合は、システム上のドライバーマネージャーの名前を使用して、 ODBCInstLib=<driver_manager_path> を simba.snowflake.ini 構成ファイルに手動で設定する必要があります。詳細については、 ODBC ドライバーを構成する をご参照ください。
例: ODBCInstLib=/usr/lib/x86_64-linux-gnu/libodbcinst.so.2
DEB パッケージのインストール¶
注釈
DEB パッケージには、ドライバーマネージャーとして unixODBC が必要です。DEB パッケージをインストールする前に、unxodbcおよびodbcinstパッケージがインストールされていることを確認してください。
前にダウンロードした DEB パッケージ を使用してLinux用Snowflake ODBC ドライバーをインストールするには、 オプションでパッケージ署名を確認 した後に、次のコマンドを実行します。
SF_ACCOUNT 変数が設定されていない場合、 dpkg コマンドは警告を表示します。このように変数をセットすると、Snowflake接続が odbc.ini ファイルに追加されます。
パッケージマネージャに必要な依存関係がインストールされていない場合、コマンドは失敗するかもしれません。その場合は、今すぐそれらをインストールしてください。
注釈
インストールディレクトリは /usr/lib/snowflake/odbc/ です。後の手順で場所が必要になります。
ステップ3: 環境を構成する(TGZ のみ)¶
注釈
RPM または DEB パッケージファイルを使用して ODBC ドライバーをインストールした場合は、このステップをスキップしてください。
TGZ ファイルを使用してインストールした場合は、インストールされたドライバーマネージャー( iODBC または unixODBCのいずれか)を使用して環境を構成します。
iODBC で構成¶
ターミナルウィンドウで、 snowflake_odbc ディレクトリに移動し、次のコマンドを実行してSnowflake ODBCをインストールします。
このスクリプトは、次のステップを完了します。
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
ここで、 path は snowflake_odbc ディレクトリの場所です。システムで他の ODBC ドライバーを構成し、次のステップでSnowflake ODBC エントリを既存の odbc.ini および odbcinst.ini ファイルに追加する予定がある場合は、 ODBCINI および ODBCINSTINI がそれらのファイルの場所をポイントするようにします。
unixODBC で構成¶
ターミナルウィンドウで、 snowflake_odbc ディレクトリに移動し、次のコマンドを実行してSnowflake ODBCをインストールします。
このスクリプトは、次のステップを完了します。
Snowflake接続をシステムレベルの
/etc/odbc.iniファイルに追加します。Snowflakeドライバー情報をシステムレベルの
/etc/odbcinst.iniファイルに追加します。Snowflake ODBC ドライバーに必要な、すべての証明機関(CA)の証明書をシステムレベルの
simba.snowflake.iniファイルに追加します。
unixodbc_setup.sh を実行すると、環境変数を設定する必要がなくなります。
または、Snowflakeがシステム構成を変更したくない場合は、シェル構成ファイル(例: .profile、 .bash_profile)に次の環境変数を追加します。
ODBCSYSINI = <パス>/conf/
ここで、 path は 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)
ここで、 path は snowflake_odbc ディレクトリの場所です。
4.1: simba.snowflake.ini ファイル(ドライバーマネージャーおよびログ)¶
次のエントリを simba.snowflake.ini ファイルに追加します。
条件:
pathはsnowflake_odbcディレクトリの場所です。
driver_manager_pathは、ドライバーマネージャーディレクトリの場所です。
iODBC:
ODBCInstLib=libiodbcinst.so.2unixODBC:
ODBCInstLib=libodbcinst.so注釈
ドライバーマネージャーディレクトリが
LD_LIBRARY_PATH環境変数に含まれていない場合は、ここでドライバーマネージャーライブラリへのフルパスを指定します。
ログパスに対する書き込み権限があることを確認します。
ANSIENCODING パラメーターは、アプリケーションの文字エンコードを指定します。デフォルトは UTF-8 です。このパラメーターは、Snowflakeによる使用に限定されています。お客様は値を変更しないでください。
4.2: odbcinst.ini ファイル(ドライバー登録)¶
次のエントリを odbcinst.ini ファイルに追加します。
ここで、 path は snowflake_odbc ディレクトリの場所です。
4.3: odbc.ini ファイル(DSN エントリ)¶
DSN ごと に、次のエントリを odbc.ini ファイルに追加します。
<DSN名> = <ドライバー名>形式の DSN 名とドライバー名(SnowflakeDSIIDriver)。パラメーター:
serverなどの必要な接続パラメーター。デフォルト
role、database、warehouseなどの追加のオプションパラメーター。
パラメーターは
<パラメーター名> = <値>形式で指定されます。各 DSN に設定できるパラメーターの詳細については、 ODBC 構成および接続パラメーター をご参照ください。
次の例は、 server URL で異なる形式の アカウント識別子 を使用する、2つのデータソースを構成する odbc.ini ファイルを示しています。
testodbc1は、組織myorganization内のアカウントmyaccountの識別子として アカウント名を使用します。testodbc2は、アカウント識別子として アカウントロケーターxy12345を使用します。testodbc2は、 AWS US 西部(オレゴン)リージョンのアカウントを使用しています。アカウントが別のリージョンにある場合、またはアカウントが別のクラウドプロバイダーを使用している場合は、 アカウントロケーターの後に追加のセグメントを指定する 必要があります。
次の点に注意してください。
testodbc1とtestodbc2の両方に既定のロールがあることtestodbc2にも、既定のデータベースとウェアハウスがあること
ステップ5: ODBC ドライバーをテストする¶
インストールされたドライバーマネージャー(iODBC または unixODBC のいずれか)を使用して、ドライバーをテストします。
iODBC によるテスト¶
作成した DSNs をテストします。コマンドラインで、次の形式を使用して、 DSN 名、ユーザーログイン名、およびパスワードを指定します。
iodbctest "DSN=<DSN名>;UID=<ユーザー名>;PWD=<パスワード>"
例:
unixODBC によるテスト¶
Test the DSNs you created using the isql command-line utility provided with unixODBC.
コマンドラインで、 DSN 名、ユーザーログイン名、およびパスワードを指定します。
例: