Installieren und Konfigurieren des ODBC-Treibers für Linux

Linux verwendet benannte Datenquellen (DSNs), um ODBC-basierte Clientanwendungen mit Snowflake zu verbinden. Sie können wählen, ob Sie den ODBC-Treiber über die TGZ-Datei, das RPM-Paket oder das DEB-Paket installieren möchten, das im Snowflake Client Repository bereitgestellt wird.

Unter diesem Thema:

Voraussetzungen

Betriebssystem

Eine Liste der von Snowflake-Clients unterstützten Betriebssysteme finden Sie unter Betriebssystemunterstützung.

Treiber-Manager: iODBC oder unixODBC

Ein Treiber-Manager ist erforderlich, um die Kommunikation zwischen Snowflake und dem ODBC-Treiber zu verwalten. Der Treiber unterstützt die Verwendung von iODBC oder unixODBC als Treibermanager.

iODBC

Wenn iODBC nicht auf CentOS, wie sudo, installiert ist, führen Sie den folgenden Befehl aus:

$ yum install libiodbc

unixODBC

unixODBC stellt die Befehlszeilen-Dienstprogramme odbcinst und isql zur Verfügung, die zur Installation, Konfiguration und zum Testen des Treibers verwendet werden. Um zu überprüfen, ob unixODBC installiert ist, führen Sie die folgenden Befehle aus:

$ which odbcinst

$ which isql

Wenn unixODBC nicht installiert ist:

  1. Führen Sie als sudo die folgenden Befehle aus:

    $ yum search unixODBC
    
    $ yum install unixODBC.x86_64
    
  2. Überprüfen Sie das Verzeichnis, in dem odbcinst die Dateien odbcinst.ini und odbc.ini erwartet:

    $ odbcinst -j
    

    Der Speicherort sollte /etc sein.

Schritt 1: Paketsignatur überprüfen (nur RPM oder DEB) – Optional

Bemerkung

Wenn Sie den ODBC-Treiber über die Datei TGZ installieren, überspringen Sie diesen Schritt.

Wenn Sie den ODBC-Treiber mit dem RPM- oder DEB-Paket installieren und die Paketsignatur vor der Installation überprüfen möchten, führen Sie die folgenden Schritte aus:

1.1: Neuesten öffentlichen Snowflake-Schlüssel herunterladen und importieren

So laden Sie den Schlüssel vom öffentlichen Keyserver herunter und importieren ihn:

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

Bemerkung

Bei einer erneuten Installation der ODBC-Treiberversion 2.18.1 oder niedriger verwenden Sie die GPG-Schlüssel-ID 93DB296A69BE019A anstelle von EC218558EABB25A1.

1.2: RPM- oder DEB-Treiberpaket herunterladen

Laden Sie das Paket aus dem Snowflake Client Repository herunter. Weitere Details dazu finden Sie unter Herunterladen des ODBC-Treibers.

1.3: Signatur für das RPM- oder DEB-Treiberpaket überprüfen

RPM-Paketsignatur

  1. Überprüfen Sie, ob der Schlüssel erfolgreich importiert wurde:

    $ gpg --list-keys
    

    Der Befehl sollte den Snowflake-Schlüssel anzeigen.

  2. Überprüfen Sie die Signatur:

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

DEB-Paketsignatur

  1. Installieren Sie das Tool zur Überprüfung der Paketsignatur:

    $ sudo apt-get install debsig-verify
    
  2. Importieren Sie den öffentlichen Schlüssel in den Schlüsselbund:

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

    Bemerkung

    Bei einer erneuten Installation der ODBC-Treiberversion 2.18.1 oder niedriger verwenden Sie die GPG-Schlüssel-ID 93DB296A69BE019A anstelle von EC218558EABB25A1.

  3. Konfigurieren Sie eine Richtlinie für den Schlüssel. Weitere Details dazu finden Sie unter /usr/share/doc/debsig-verify. Die Richtlinie muss im folgenden Verzeichnis gespeichert werden:

    /etc/debsig/policies/EC218558EABB25A1

    Speichern Sie die Richtlinie in einer Datei mit dem Namen <Richtlinienname>.pol, wobei Richtlinienname der von Ihnen vergebene Name für die Richtlinie ist. Für den Richtliniennamen können Sie eine beliebige Zeichenfolge verwenden, die jedoch keine Leerzeichen enthalten darf.

    Hier ist eine Beispieldatei mit Richtlinien:

    <?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. Überprüfen Sie die Signatur:

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

Bemerkung

Standardmäßig erfolgt beim Installieren des Pakets keine Überprüfung der Signatur durch das dpkg-Paket-Signaturverifizierungstool. Wenn Sie die Signatur bei jeder Ausführung von dpkg überprüfen möchten, müssen Sie die Zeile --no-debsig aus der Datei /etc/dpkg/dpkg.cfg entfernen.

1.4: Alten öffentlichen Snowflake-Schlüssel löschen – Optional

Ihre lokale Umgebung kann mehrere GPG-Schlüssel enthalten. Aus Sicherheitsgründen rotiert Snowflake jedoch regelmäßig den öffentlichen GPG-Schlüssel. Als Best Practice empfehlen wir, den vorhandenen öffentlichen Schlüssel zu löschen, nachdem wir bestätigt haben, dass der letzte Schlüssel mit dem zuletzt signierten Paket funktioniert.

So löschen Sie den Schlüssel:

$ gpg --delete-key "Snowflake Computing"

Schritt 2: ODBC-Treiber installieren

Installieren Sie den Treiber mit einem der Distributionspakete:

  • TGZ (TAR-Datei komprimiert mit .GZIP)

  • RPM

  • DEB

Installieren der TGZ-Datei

So installieren Sie den Snowflake-ODBC-Treiber für Linux mithilfe der TGZ-Datei:

  1. Laden Sie die Datei über das Snowflake Client Repository herunter. Weitere Details dazu finden Sie unter Herunterladen des ODBC-Treibers.

  2. Kopieren Sie die heruntergeladene Datei (snowflake_linux_x8664_odbc-Version.tgz) in ein Arbeitsverzeichnis.

  3. Entpacken Sie die Datei:

    $ gunzip snowflake_linux_x8664_odbc-<version>.tgz
    
  4. Extrahieren Sie die Dateien aus der .tar-Datei:

    $ tar -xvf snowflake_linux_x8664_odbc-<version>.tar
    
  5. Kopieren Sie den resultierenden Ordner snowflake_odbc in das Verzeichnis, in dem Sie den Treiber installieren möchten. Notieren Sie sich dieses Verzeichnis. Sie werden den Speicherort später in der Anleitung benötigen.

Installieren des RPM-Pakets

Bemerkung

Das RPM-Paket benötigt unixODBC als Treiber-Manager.

Um den Snowflake-ODBC-Treiber für Linux mit dem RPM-Paket zu installieren, führen Sie nach der optionalen Überprüfung der Paketsignatur den folgenden Befehl aus:

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

Bemerkung

Das Installationsverzeichnis ist /usr/lib64/snowflake/odbc/. Sie werden den Speicherort später in der Anleitung benötigen.

Installieren des DEB-Pakets

Bemerkung

Das DEB-Paket benötigt unixODBC als Treiber-Manager.

Um den Snowflake-ODBC-Treiber für Linux mit dem DEB-Paket zu installieren, führen Sie nach der optionalen Überprüfung der Paketsignatur den folgenden Befehl aus:

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

Der Befehl kann fehlschlagen, wenn keine erforderlichen Abhängigkeiten für den Paketmanager installiert sind. Wenn das passiert, installieren Sie diese jetzt:

$ sudo apt-get install -f

Bemerkung

Das Installationsverzeichnis ist /usr/lib/snowflake/odbc/. Sie werden den Speicherort später in der Anleitung benötigen.

Schritt 3: Umgebung konfigurieren (nur TGZ)

Bemerkung

Wenn Sie den ODBC-Treiber mit der RPM- oder DEB-Paketdatei installiert haben, überspringen Sie diesen Schritt.

Wenn Sie die Installation mit der TGZ-Datei vorgenommen haben, konfigurieren Sie die Umgebung mit dem installierten Treiber-Manager (entweder iODBC oder unixODBC).

Konfigurieren mit iODBC

Wechseln Sie in einem Terminalfenster in das Verzeichnis snowflake_odbc, und führen Sie den folgenden Befehl aus, um Snowflake ODBC zu installieren:

$ ./iodbc_setup.sh

Dieses Skript führt die folgenden Schritte aus:

  • Fügt eine Snowflake-Verbindung zu Ihrer Datei /etc/odbc.ini auf Systemebene hinzu.

  • Fügt die Snowflake-Treiberinformationen zu Ihrer Datei auf Systemebene /etc/odbcinst.ini hinzu.

  • Fügt alle vom Snowflake-ODBC-Treiber benötigten Zertifikate der Zertifizierungsstelle (CA) zu Ihrer Datei simba.snowflake.ini auf Systemebene hinzu.

Wenn Sie iodbc_setup.sh ausführen, müssen Sie keine Umgebungsvariablen festlegen.

Wenn Sie nicht möchten, dass Snowflake Ihre Systemkonfigurationen ändert, fügen Sie der Shell-Konfigurationsdatei die folgenden Umgebungsvariablen hinzu (z. B. .profile, .bash_profile):

  • ODBCINI = <Pfad>/conf/odbc.ini

  • ODBCINSTINI = <Pfad>/conf/odbcinst.ini

Dabei ist Pfad der Speicherort des Verzeichnisses snowflake_odbc. Wenn Sie andere ODBC-Treiber in Ihrem System konfiguriert haben und im nächsten Schritt die Snowflake-ODBC-Einträge zu Ihren bestehenden Dateien odbc.ini und odbcinst.ini hinzufügen möchten, dann lassen Sie ODBCINI und ODBCINSTINI auf den Speicherort dieser Dateien verweisen.

Konfigurieren mit unixODBC

Wechseln Sie in einem Terminalfenster in das Verzeichnis snowflake_odbc, und führen Sie den folgenden Befehl aus, um Snowflake ODBC zu installieren:

$ ./unixodbc_setup.sh

Dieses Skript führt die folgenden Schritte aus:

  • Fügt eine Snowflake-Verbindung zu Ihrer Datei auf Systemebene /etc/odbc.ini hinzu.

  • Fügt die Snowflake-Treiberinformationen zu Ihrer Datei auf Systemebene /etc/odbcinst.ini hinzu.

  • Fügt alle vom Snowflake-ODBC-Treiber benötigten Zertifikate der Zertifizierungsstelle (CA) zu Ihrer Datei simba.snowflake.ini auf Systemebene hinzu.

Wenn Sie unixodbc_setup.sh ausführen, müssen Sie keine Umgebungsvariablen festlegen.

Wenn Sie nicht möchten, dass Snowflake Ihre Systemkonfigurationen ändert, fügen Sie der Shell-Konfigurationsdatei die folgenden Umgebungsvariablen hinzu (z. B. .profile, .bash_profile):

  • ODBCSYSINI = <Pfad>/conf/

Dabei ist Pfad der Speicherort des Verzeichnisses snowflake_odbc. Wenn Sie andere ODBC-Treiber in Ihrem System konfiguriert haben und im nächsten Schritt die Snowflake-ODBC-Einträge zu Ihren bestehenden Dateien odbc.ini und odbcinst.ini hinzufügen möchten, dann lassen Sie ODBCSYSINI auf den Speicherort dieser Dateien verweisen.

Schritt 4: ODBC-Treiber konfigurieren

Die Konfiguration des ODBC-Treibers erfordert das Hinzufügen von Einträgen zu den folgenden Dateien:

  • <Pfad>/lib/simba.snowflake.ini

  • /etc/odbcinst.ini (oder <Pfad>/conf/odbc.ini, wenn Sie Umgebungsvariablen verwenden)

  • /etc/odbc.ini (oder <Pfad>/conf/odbcinst.ini, wenn Sie Umgebungsvariablen verwenden)

Dabei ist Pfad der Speicherort des Verzeichnisses snowflake_odbc.

4.1: simba.snowflake.ini-Datei (Treibermanager und Protokollierung)

Fügen Sie die folgenden Einträge zur Datei simba.snowflake.ini hinzu:

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

Wobei:

  • Pfad ist der Speicherort des Verzeichnisses snowflake_odbc.

  • Treibermanagerpfad ist der Speicherort Ihres Treibermanagerverzeichnisses:

    • iODBC: ODBCInstLib=libiodbcinst.so.2

    • unixODBC: ODBCInstLib=libodbcinst.so

    Bemerkung

    Wenn das Verzeichnis Ihres Treibermanager nicht in der Umgebungsvariablen LD_LIBRARY_PATH enthalten ist, geben Sie hier den vollständigen Pfad zur Treibermanager-Bibliothek an.

Überprüfen Sie, ob Sie über Schreibrechte für den Protokollpfad verfügen.

Der Parameter ANSIENCODING gibt die Zeichencodierung der Anwendung an. Die Voreinstellung ist UTF-8. Der Parameter ist nur zur Verwendung durch Snowflake vorgesehen. Kunden sollten den Wert nicht ändern.

4.2: odbcinst.ini-Datei (Treiberregistrierung)

Fügen Sie die folgenden Einträge zur Datei odbcinst.ini hinzu:

[ODBC Drivers]
SnowflakeDSIIDriver=Installed

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

Dabei ist Pfad der Speicherort des Verzeichnisses snowflake_odbc.

4.3: odbc.ini-Datei (DSN-Einträge)

Fügen Sie für jeden DSN die folgenden Einträge zur Datei odbc.ini hinzu:

  • DSN-Name und Treibername (SnowflakeDSIIDriver) in der Form <DSN-Name> = <Treibername>.

  • Parameter:

    • Erforderliche Verbindungsparameter, wie z. B. server.

    • Alle zusätzlichen, optionalen Parameter, wie z. B. Standardrolle (role), Standarddatenbank (database) und Standardwarehouse (warehouse).

    Parameter werden in der Form <Parametername> = <Wert> angegeben. Einzelheiten zu den Parametern, die für jeden DSN festgelegt werden können, finden Sie unter ODBC-Konfigurations- und Verbindungsparameter.

Das folgende Beispiel veranschaulicht eine odbc.ini-Datei mit zwei Treibern, testodbc1 für das Konto xy12345 (in der Region AWS US West) und testodbc2 für das Konto yz23456 (in der Region AWS US East):

[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

Beachten Sie Folgendes:

  • Sowohl testodbc1 als auch testodbc2 haben Standardrollen.

  • testodbc2 hat auch eine Standarddatenbank und ein Standardwarehouse.

Schritt 5: ODBC-Treiber testen

Testen Sie den Treiber mit dem installierten Treibermanager (entweder iODBC oder unixODBC).

Testen mit iODBC

Testen Sie die von Ihnen erstellten DSNs. Geben Sie in der Befehlszeile den DSN-Namen, den Benutzeranmeldenamen und das Kennwort im folgenden Format an:

iodbctest "DSN=<DSN-Name>;UID=<Benutzername>;PWD=<Kennwort>"

Beispiel:

$ 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>

Testen mit unixODBC

Testen Sie die DSNs, die Sie mit dem Befehlszeilen-Dienstprogramm isql erstellt haben, das vom Befehl unixODBC bereitgestellt wurde.

Geben Sie in der Befehlszeile den DSN-Namen, den Benutzeranmeldenamen und das Kennwort an.

Beispiel:

$ 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>