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.
Ab ODBC-Version 3.0.1 bietet der Treiber keine Unterstützung mehr für CentOS 6-Versionen.
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:
Führen Sie als
sudo
die folgenden Befehle aus:$ yum search unixODBC $ yum install unixODBC.x86_64
Überprüfen Sie das Verzeichnis, in dem
odbcinst
die Dateienodbcinst.ini
undodbc.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 mit yum
oder der TGZ-Datei 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¶
Laden Sie vom öffentlichen Keyserver den öffentlichen Snowflake-GPG-Schlüssel in der von Ihnen verwendeten ODBC-Treiberversion herunter, und importieren Sie diesen:
Für Version 2.25.6 und höher:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 630D9F3CAB551AF3
Für die Versionen 2.22.1 bis 2.25.5:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 37C7086698CB005C
Für die Versionen 2.18.2 bis 2.22.0:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys EC218558EABB25A1
Für Version 2.18.1 und niedriger:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 93DB296A69BE019A
Bemerkung
Wenn dieser Befehl mit der folgenden Fehlermeldung fehlschlägt:
gpg: keyserver receive failed: Server indicated a failure
Geben Sie an, dass Sie Port 80 für den Keyserver verwenden möchten:
gpg --keyserver hkp://keyserver.ubuntu.com:80 ...
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¶
Überprüfen Sie, ob der Schlüssel erfolgreich importiert wurde:
$ gpg --list-keys
Der Befehl sollte den Snowflake-Schlüssel anzeigen.
Überprüfen Sie die Signatur:
$ rpm -K snowflake-odbc-<version>.x86_64.rpm
Bemerkung
Wenn
rpm
nicht über den GPG-Schlüssel verfügt, den Sie importiert haben, meldet der Befehl, dass die Signaturen nicht OK sind, und gibt eineNOKEY
-Warnung aus:$ 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
Führen Sie in diesem Fall die folgenden Befehle aus, um den GPG-Schlüssel zu exportieren, den Schlüssel in
rpm
zu importieren und die Signatur erneut zu überprüfen:$ 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
wobei
<GPG_KEY_ID>
die ID für den Schlüssel ist, den Sie in 1.1: Neuesten öffentlichen Snowflake-Schlüssel herunterladen und importieren installiert haben.
DEB-Paketsignatur¶
Installieren Sie das Tool zur Überprüfung der Paketsignatur:
$ sudo apt-get install debsig-verify
Importieren Sie den öffentlichen Schlüssel in den Schlüsselbund:
$ 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
wobei
<GPG_KEY_ID>
die ID für den Schlüssel ist, den Sie in 1.1: Neuesten öffentlichen Snowflake-Schlüssel herunterladen und importieren installiert haben.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/<GPG_KEY_ID>
wobei
<GPG_KEY_ID>
die ID für den Schlüssel ist, den Sie in 1.1: Neuesten öffentlichen Snowflake-Schlüssel herunterladen und importieren installiert haben.Speichern Sie die Richtlinie in einer Datei mit dem Namen
policy_name.pol
, wobeipolicy_name
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 Beispiel-Richtliniendatei für einen Schlüssel mit dem 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>
Ü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 einer der folgenden Methoden:
Verwenden von yum zum Herunterladen und Installieren des Treibers¶
Mit Version 2.21.1 des ODBC-Treibers (und spätere Versionen) können Sie yum
verwenden, um den Treiber herunterzuladen und zu installieren.
So laden Sie den Snowflake-ODBC-Treiber für Linux mit yum
herunter und installieren ihn:
Erstellen Sie eine Datei mit dem Namen
/etc/yum.repos.d/snowflake-odbc.repo
, und fügen Sie der Datei den folgenden Text hinzu:[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
wobei
VERSION_NUMBER
die spezifische Versionsnummer des Treibers (z. B. 3.2.0) undGPG_KEY_ID
eine der folgenden Schlüssel-IDs ist:ODBC-Treiberversion
GPG-Schlüssel-ID
2.22.1 und höher
630D9F3CAB551AF3
In den obigen Einstellungen zeigen
baseurl
undgpgkey
auf das Snowflake Client Repository auf Amazon S3. Wenn Sie stattdessen den Spiegel auf Azure Blob verwenden möchten, ändern Sie den Hostnamen inhttps://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
Führen Sie den folgenden Befehl aus, um den Treiber zu installieren:
yum install snowflake-odbc
Installieren der TGZ-Datei¶
So installieren Sie den Snowflake-ODBC-Treiber für Linux mithilfe der zuvor heruntergeladenen TGZ-Datei:
Kopieren Sie die heruntergeladene Datei (
snowflake_linux_x8664_odbc-version.tgz
) in ein Arbeitsverzeichnis.Entpacken Sie die Datei:
$ gunzip snowflake_linux_x8664_odbc-<version>.tgz
Extrahieren Sie die Dateien aus der .tar-Datei:
$ tar -xvf snowflake_linux_x8664_odbc-<version>.tar
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 zuvor heruntergeladenen 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.
Wenn der Treiber die Bibliothek nicht finden kann, wird der Fehler Unable to locate SQLGetPrivateProfileString function
angezeigt. In diesem Fall müssen Sie ODBCInstLib=<driver_manager_path>
manuell in der Konfigurationsdatei simba.snowflake.ini
mit dem Namen des Treibermanagers auf Ihrem System angeben. Weitere Informationen dazu finden Sie unter ODBC-Treiber konfigurieren.
Beispiel: ODBCInstLib=/usr/lib/x86_64-linux-gnu/libodbcinst.so.2
.
Installieren des DEB-Pakets¶
Bemerkung
Das DEB-Paket benötigt unixODBC als Treiber-Manager.
Um den Snowflake-ODBC-Treiber für Linux mit dem zuvor heruntergeladenen 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
Wobei path
der Speicherort des snowflake_odbc
-Verzeichnisses ist. 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/
Wobei path
der Speicherort des snowflake_odbc
-Verzeichnisses ist. 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)
Wobei path
der Speicherort des snowflake_odbc
-Verzeichnisses ist.
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:
path
ist der Speicherort dessnowflake_odbc
-Verzeichnisses.
driver_manager_path
ist der Speicherort Ihres Treiber-Manager-Verzeichnisses:
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
Wobei path
der Speicherort des snowflake_odbc
-Verzeichnisses ist.
4.3: odbc.ini
-Datei (DSN-Einträge)¶
Fügen Sie für jede 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 Konfigurations- und Verbindungsparameter für ODBC.
Das folgende Beispiel zeigt eine odbc.ini
-Datei, die zwei Datenquellen konfiguriert, die unterschiedliche Formen eines Kontobezeichners in der server
-URL verwenden:
testodbc1
verwendet einen Kontobezeichner, der einen Kontobezeichner (Kontonamen) zur Angabe des Kontosmyaccount
der Organisationmyorganization
verwendet.testodbc2
verwendet den Konto-Locatorxy12345
als Kontobezeichner.Beachten Sie, dass
testodbc2
ein Konto in der Region AWS US West (Oregon) verwendet. Wenn sich das Konto in einer anderen Region befindet oder wenn das Konto einen anderen Cloudanbieter verwendet, müssen Sie nach dem Konto-Locator zusätzliche Segmente angeben.[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
Beachten Sie Folgendes:
Sowohl
testodbc1
als auchtestodbc2
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>