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 がインストールされていない場合、次のコマンドを実行します。
$ yum install libiodbc
unixODBC¶
unixODBC ドライバのインストール、構成、およびテストに使用される odbcinst
および isql
コマンドラインユーティリティを提供します。unixODBC がインストールされているかどうかを確認するには、次のコマンドを実行します。
$ which odbcinst $ which isql
unixODBC がインストールされていない場合、
sudo
として、次のコマンドを実行します。$ yum search unixODBC $ yum install unixODBC.x86_64
odbcinst.ini
およびodbc.ini
ファイルが配置されると予想されるodbcinst
のディレクトリを確認します。$ odbcinst -j
場所は
/etc
である必要があります。
ステップ1: パッケージ署名を確認する(RPM または DEB のみ)--- オプション¶
注釈
yum
または TGZ ファイル を使用して ODBC ドライバーをインストールする場合は、このステップをスキップしてください。
RPM または DEB パッケージを使用して ODBC ドライバーをインストールする際、インストール前にパッケージ署名を確認する場合は、次のタスクを実行します。
1.1: 最新のSnowflake公開キーをダウンロードおよびインポートする¶
公開キーサーバーから、使用している ODBC ドライバーのバージョンのSnowflake GPG 公開キーをダウンロードしてインポートします。
バージョン2.25.6以上の場合、
$ 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
注釈
このコマンドが次のエラーを発生して失敗した場合、
gpg: keyserver receive failed: Server indicated a failure
次に、キーサーバーにポート80を使用することを指定します。
gpg --keyserver hkp://keyserver.ubuntu.com:80 ...
1.2: RPM または DEB ドライバーパッケージをダウンロードする¶
Snowflake Client Repositoryからパッケージをダウンロードします。詳細については、 ODBC ドライバーのダウンロード をご参照ください。
1.3: RPM または DEB ドライバーパッケージの署名を確認する¶
RPM パッケージ署名¶
キーが正常にインポートされたことを確認します。
$ gpg --list-keys
コマンドはSnowflakeキーを表示する必要があります。
署名を確認します。
$ rpm -K snowflake-odbc-<version>.x86_64.rpm
注釈
rpm
にインポートした GPG キーがない場合、コマンドは署名が OK でないことを報告し、NOKEY
警告を生成します。$ rpm -K snowflake-odbc-<version>.x86_64.rpm snowflake-odbc-<version>.x86_64.rpm: digests SIGNATURES NOT OK $ rpm -Kv snowflake-odbc-<version>.x86_64.rpm snowflake-odbc-<version>.rpm: Header V4 RSA/SHA1 Signature, key ID 98cb005c: NOKEY Header SHA1 digest: OK V4 RSA/SHA1 Signature, key ID 98cb005c: NOKEY MD5 digest: OK
これが発生した場合は、次のコマンドを実行して GPG キーをエクスポートし、キーを
rpm
にインポートして、署名を再度確認します。$ gpg --export -a <GPG_KEY_ID> > odbc-signing-key.asc $ sudo rpm --import odbc-signing-key.asc $ rpm -K snowflake-odbc-<version>.x86_64.rpm
<GPG_KEY_ID>
は 1.1: 最新のSnowflake公開キーをダウンロードおよびインポートする にインストールしたキーの ID です。
DEB パッケージ署名¶
パッケージ署名確認ツールをインストールします。
$ sudo apt-get install debsig-verify
公開キーをキーリングにインポートします。
$ mkdir /usr/share/debsig/keyrings/<GPG_KEY_ID> $ gpg --export <GPG_KEY_ID> > snowflakeKey.asc $ touch /usr/share/debsig/keyrings/<GPG_KEY_ID>/debsig.gpg $ gpg --no-default-keyring --keyring /usr/share/debsig/keyrings/<GPG_KEY_ID>/debsig.gpg --import snowflakeKey.asc
<GPG_KEY_ID>
は 1.1: 最新のSnowflake公開キーをダウンロードおよびインポートする にインストールしたキーの ID です。キーのポリシーを構成します。詳細については、
/usr/share/doc/debsig-verify
をご参照ください。ポリシーは次のディレクトリに保存する必要があります。/etc/debsig/policies/<GPG_KEY_ID>
<GPG_KEY_ID>
は 1.1: 最新のSnowflake公開キーをダウンロードおよびインポートする にインストールしたキーの ID です。ポリシーを
policy_name.pol
という名前のファイルに保存します。ここで、policy_name
はポリシーの名前です。ポリシー名には、任意のテキスト文字列を使用できますが、文字列に空白スペースを含めることはできません。ID 630D9F3CAB551AF3 のキーのサンプルポリシーファイルは次のとおりです。
<?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="630D9F3CAB551AF3" Description="Snowflake ODBC Driver DEB package"/> <Selection> <Required Type="origin" File="debsig.gpg" id="630D9F3CAB551AF3"/> </Selection> <Verification MinOptional="0"> <Required Type="origin" File="debsig.gpg" id="630D9F3CAB551AF3"/> </Verification> </Policy>
署名を確認します。
$ 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 ドライバーをインストールする¶
次のアプローチのいずれかを使用してドライバーをインストールします。
yumを使用したドライバーのダウンロードとインストール¶
ODBC ドライバーのバージョン2.21.1(およびそれ以降のバージョン)では、 yum
を使用してドライバーをダウンロードし、インストールできます。
yum
を使用してLinux用Snowflake ODBC ドライバーをダウンロードし、インストールするには、
/etc/yum.repos.d/snowflake-odbc.repo
という名前のファイルを作成し、次のテキストをファイルに追加します。[snowflake-odbc] name=snowflake-odbc baseurl=https://sfc-repo.snowflakecomputing.com/odbc/linux/<VERSION_NUMBER>/ gpgkey=https://sfc-repo.snowflakecomputing.com/odbc/Snowkey-<GPG_KEY_ID>-gpg
ここで、
VERSION_NUMBER
はドライバーの特定のバージョン番号(例: 3.2.0)であり、GPG_KEY_ID
は次のキー IDs のいずれかです。ODBC ドライバーのバージョン
GPG キー ID
2.22.1以上
630D9F3CAB551AF3
上記の設定では、
baseurl
とgpgkey
は、Amazon S3の Snowflakeクライアントリポリトジ を指しています。代わりにAzure BLOBでミラーを使用する場合は、ホスト名をhttps://sfc-repo.azure.snowflakecomputing.com/
に変更します。[snowflake-odbc] name=snowflake-odbc baseurl=https://sfc-repo.azure.snowflakecomputing.com/odbc/linux/<VERSION_NUMBER>/ gpgkey=https://sfc-repo.azure.snowflakecomputing.com/odbc/Snowkey-<GPG_KEY_ID>-gpg
次のコマンドを実行して、ドライバーをインストールします。
yum install snowflake-odbc
TGZ ファイルのインストール¶
前にダウンロードした TGZ ファイル を使用してLinux用Snowflake ODBC ドライバーをインストールするには、
ダウンロードしたファイル(
snowflake_linux_x8664_odbc-version.tgz
)を作業ディレクトリにコピーします。ファイルを解凍します。
$ gunzip snowflake_linux_x8664_odbc-<version>.tgz
.tarファイルからファイルを抽出します。
$ tar -xvf snowflake_linux_x8664_odbc-<version>.tar
結果の
snowflake_odbc
フォルダーを、ドライバーをインストールするディレクトリにコピーします。このディレクトリをメモします。後の手順で場所が必要になります。
RPM パッケージのインストール¶
注釈
RPM パッケージには、ドライバーマネージャーとして unixODBC が必要です。
前にダウンロードした RPM パッケージ を使用してLinux用Snowflake ODBC ドライバーをインストールするには、 オプションでパッケージ署名を確認 した後に、次のコマンドを実行します。
$ yum install snowflake-odbc-<version>.x86_64.rpm
注釈
インストールディレクトリは /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 パッケージ を使用して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
ここで、 path
は 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/
ここで、 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
ファイルに追加します。
ErrorMessagesPath=<path>/ErrorMessages/ LogPath=/tmp/ ODBCInstLib=<driver_manager_path> CABundleFile=<path>/lib/cacert.pem ANSIENCODING=UTF-8
条件:
path
はsnowflake_odbc
ディレクトリの場所です。
driver_manager_path
は、ドライバーマネージャーディレクトリの場所です。
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
ここで、 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 西部(オレゴン)リージョンのアカウントを使用しています。アカウントが別のリージョンにある場合、またはアカウントが別のクラウドプロバイダーを使用している場合は、 アカウントロケーターの後に追加のセグメントを指定する 必要があります。[ODBC Data Sources] testodbc1 = SnowflakeDSIIDriver testodbc2 = SnowflakeDSIIDriver [testodbc1] Driver = /usr/jsmith/snowflake_odbc/lib/libSnowflake.so Description = server = myorganization-myaccount.snowflakecomputing.com role = sysadmin [testodbc2] Driver = /usr/jsmith/snowflake_odbc/lib/libSnowflake.so Description = server = xy12345.snowflakecomputing.com role = analyst database = sales warehouse = analysis
次の点にご注意ください。
testodbc1
とtestodbc2
の両方に既定のロールがあること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>