Installation et configuration du pilote ODBC pour Linux

Linux utilise des sources de données nommées (DSNs) pour connecter les applications client basées sur ODBC à Snowflake. Vous pouvez choisir d’installer le pilote ODBC en utilisant le fichier TGZ, le pack RPM ou le pack DEB fourni dans le Snowflake Client Repository.

Dans ce chapitre :

Conditions préalables

Système d’exploitation

Pour obtenir la liste des systèmes d’exploitation pris en charge par les clients Snowflake, voir Prise en charge par les systèmes d’exploitation.

Gestionnaire de pilotes : iODBC ou unixODBC

Un gestionnaire de pilotes est nécessaire pour gérer la communication entre Snowflake et le pilote ODBC. Le pilote prend en charge l’utilisation de iODBC ou de unixODBC comme gestionnaire de pilotes.

iODBC

Si iODBC n’est pas installé sur CentOS, comme sudo, exécutez la commande suivante :

$ yum install libiodbc

unixODBC

unixODBC fournit les utilitaires de ligne de commande odbcinst et isql utilisés pour installer, configurer et tester le pilote. Pour vérifier si unixODBC est installé, exécutez les commandes suivantes :

$ which odbcinst

$ which isql

Si unixODBC n’est pas installé :

  1. En tant que sudo, exécutez les commandes suivantes :

    $ yum search unixODBC
    
    $ yum install unixODBC.x86_64
    
  2. Vérifiez le répertoire où odbcinst s’attend à ce que les fichiers odbcinst.ini et odbc.ini se trouvent :

    $ odbcinst -j
    

    L’emplacement devrait être /etc.

Étape 1 : vérification de la signature du pack (RPM ou DEB uniquement) — Facultatif

Note

Si vous installez le pilote ODBC en utilisant le fichier TGZ, ignorez cette étape.

Si vous installez le pilote ODBC à l’aide du pack RPM ou DEB et que vous souhaitez vérifier la signature du pack avant l’installation, effectuez les tâches suivantes :

1.1 : téléchargement et importation de la dernière clé publique Snowflake

Pour télécharger et importer la clé à partir du serveur de clés publiques :

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

Note

Si vous réinstallez la version du pilote ODBC 2.18.1 ou une version inférieure, utilisez l’ID de clé GPG 93DB296A69BE019A au lieu de EC218558EABB25A1.

1.2 : téléchargement du pack de pilotes RPM ou DEB

Téléchargez le pack à partir du Snowflake Client Repository. Pour plus de détails, voir Téléchargement du pilote ODBC.

1.3 : vérification de la signature du pack de pilote RPM ou DEB

Signature du pack RPM

  1. Vérifiez que la clé a été importée avec succès :

    $ gpg --list-keys
    

    La commande doit afficher la clé Snowflake.

  2. Vérifiez la signature :

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

Signature du pack DEB

  1. Installez l’outil de vérification de la signature du pack :

    $ sudo apt-get install debsig-verify
    
  2. Importez la clé publique vers le « trousseau » :

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

    Note

    Si vous réinstallez la version du pilote ODBC 2.18.1 ou une version inférieure, utilisez l’ID de clé GPG 93DB296A69BE019A au lieu de EC218558EABB25A1.

  3. Configurez une politique pour la clé. Pour plus de détails, voir /usr/share/doc/debsig-verify. La politique doit être stockée dans le répertoire suivant :

    /etc/debsig/policies/EC218558EABB25A1

    Stockez la politique dans un fichier nommé <nom_politique>.pol, où nom_politique est le nom de la politique. Pour le nom de la politique, vous pouvez utiliser n’importe quelle chaîne de texte, mais celle-ci ne peut pas contenir d’espaces vides.

    Voici un exemple de fichier de stratégie :

    <?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. Vérifiez la signature :

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

Note

Par défaut, l’outil de vérification de signature de pack dpkg ne vérifie pas la signature lorsque vous installez le pack. Si vous voulez vérifier la signature à chaque fois que vous exécutez dpkg, supprimez la ligne --no-debsig du fichier /etc/dpkg/dpkg.cfg.

1.4 : suppression de l’ancienne clé publique Snowflake — Facultatif

Votre environnement local peut contenir plusieurs clés GPG. Cependant, pour des raisons de sécurité, Snowflake fait tourner périodiquement la clé publique GPG. Nous recommandons de supprimer la clé publique existante après avoir confirmé que la dernière clé fonctionne avec le dernier pack signé.

Pour effacer la clé :

$ gpg --delete-key "Snowflake Computing"

Étape 2 : installation du pilote ODBC

Installez le pilote à l’aide de l’un des packs de distribution :

  • TGZ (TAR fichier compressé en utilisant .GZIP)

  • RPM

  • DEB

Installation du fichier TGZ

Pour installer le pilote ODBC de Snowflake pour Linux en utilisant le fichier TGZ :

  1. Téléchargez le fichier à partir du Snowflake Client Repository. Pour plus de détails, voir Téléchargement du pilote ODBC.

  2. Copiez le fichier téléchargé (snowflake_linux_x8664_odbc-version.tgz) dans un répertoire fonctionnel.

  3. Décompressez le fichier :

    $ gunzip snowflake_linux_x8664_odbc-<version>.tgz
    
  4. Extrayez les fichiers du fichier.tar :

    $ tar -xvf snowflake_linux_x8664_odbc-<version>.tar
    
  5. Copiez le dossier snowflake_odbc résultant dans le répertoire dans lequel vous souhaitez installer le pilote. Prenez note du répertoire. Vous aurez besoin de l’emplacement plus tard dans les instructions.

Installation du pack RPM

Note

Le pack RPM nécessite unixODBC comme gestionnaire de pilotes.

Pour installer le pilote ODBC de Snowflake pour Linux à l’aide du pack RPM, après avoir vérifié facultativement la signature du pack, exécutez la commande suivante :

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

Note

Le répertoire d’installation est /usr/lib64/snowflake/odbc/. Vous aurez besoin de l’emplacement plus tard dans les instructions.

Installation du pack DEB

Note

Le pack DEB nécessite unixODBC comme gestionnaire de pilotes.

Pour installer le pilote ODBC de Snowflake pour Linux à l’aide du pack DEB, après avoir vérifié facultativement la signature du pack, exécutez la commande suivante :

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

La commande peut échouer si aucune des dépendances requises pour le gestionnaire de packs n’est installée. Si cela se produit, installez-les maintenant :

$ sudo apt-get install -f

Note

Le répertoire d’installation est /usr/lib/snowflake/odbc/. Vous aurez besoin de l’emplacement plus tard dans les instructions.

Étape 3 : configuration de l’environnement (TGZ uniquement)

Note

Si vous avez installé le pilote ODBC en utilisant le fichier RPM ou DEB du pack, ignorez cette étape.

Si vous l’avez installé en utilisant le fichier TGZ, configurez l’environnement en utilisant le gestionnaire de pilotes installé (soit iODBC ou unixODBC).

Configuration avec iODBC

Dans une fenêtre de terminal, passez dans le répertoire snowflake_odbc et exécutez la commande suivante pour installer Snowflake ODBC :

$ ./iodbc_setup.sh

Ce script exécute les étapes suivantes :

  • Ajoute une connexion Snowflake à votre fichier de niveau système /etc/odbc.ini.

  • Ajoute les informations du pilote Snowflake à votre fichier de niveau système /etc/odbcinst.ini.

  • Ajoute tous les certificats d’autorité de certification (CA) requis par le pilote Snowflake ODBC à votre fichier simba.snowflake.ini de niveau système.

En exécutant iodbc_setup.sh, vous n’avez pas besoin de définir de variables d’environnement.

En outre, si vous ne voulez pas que Snowflake change la configuration de votre système, ajoutez les variables d’environnement suivantes à votre fichier de configuration shell (par ex. .profile, .bash_profile) :

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

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

chemin est l’emplacement du répertoire snowflake_odbc. Si vous avez configuré d’autres pilotes ODBC dans votre système et prévoyez d’ajouter les entrées ODBC Snowflake à vos fichiers odbc.ini et odbcinst.ini existants à l’étape suivante, alors pointez ODBCINI et ODBCINSTINI vers l’emplacement de ces fichiers.

Configuration avec unixODBC

Dans une fenêtre de terminal, passez dans le répertoire snowflake_odbc et exécutez la commande suivante pour installer Snowflake ODBC :

$ ./unixodbc_setup.sh

Ce script exécute les étapes suivantes :

  • Ajoute une connexion Snowflake à votre fichier de niveau système /etc/odbc.ini.

  • Ajoute les informations du pilote Snowflake à votre fichier de niveau système /etc/odbcinst.ini.

  • Ajoute tous les certificats d’autorité de certification (CA) requis par le pilote Snowflake ODBC à votre fichier simba.snowflake.ini de niveau système.

En exécutant unixodbc_setup.sh, vous n’avez pas besoin de définir de variables d’environnement.

En outre, si vous ne voulez pas que Snowflake change la configuration de votre système, ajoutez les variables d’environnement suivantes à votre fichier de configuration shell, par ex. .profile, .bash_profile :

  • ODBCSYSINI = <chemin>/conf/

chemin est l’emplacement du répertoire snowflake_odbc. Si vous avez configuré d’autres pilotes ODBC dans votre système et prévoyez d’ajouter les entrées ODBC Snowflake à vos fichiers odbc.ini et odbcinst.ini existants à l’étape suivante, alors pointez ODBCSYSINI vers l’emplacement de ces fichiers.

Étape 4 : configuration du pilote ODBC

La configuration du pilote ODBC nécessite l’ajout d’entrées dans les fichiers suivants :

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

  • /etc/odbcinst.ini (ou <chemin>/conf/odbc.ini si vous utilisez des variables d’environnement)

  • /etc/odbc.ini (ou <chemin>/conf/odbcinst.ini si vous utilisez des variables d’environnement)

chemin est l’emplacement du répertoire snowflake_odbc.

4.1 : fichier simba.snowflake.ini (gestionnaire de pilotes et connexion)

Ajoutez les entrées suivantes au fichier simba.snowflake.ini :

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

Où :

  • chemin est l’emplacement du répertoire snowflake_odbc.

  • chemin_gestionnaire_pilotes est l’emplacement de votre répertoire du gestionnaire de pilotes :

    • iODBC : ODBCInstLib=libiodbcinst.so.2

    • unixODBC : ODBCInstLib=libodbcinst.so

    Note

    Si le répertoire de votre gestionnaire de pilotes n’est pas inclus dans la variable d’environnement LD_LIBRARY_PATH, indiquez ici le chemin complet vers la bibliothèque du gestionnaire de pilotes.

Vérifiez que vous avez les permissions d’écriture sur le chemin d’accès au journal.

Le paramètre ANSIENCODING spécifie l’encodage des caractères de l’application. La valeur par défaut est UTF-8. Le paramètre est destiné à être utilisé uniquement par Snowflake ; les clients ne doivent pas modifier la valeur.

4.2 : fichier odbcinst.ini (enregistrement de pilotes)

Ajoutez les entrées suivantes au fichier odbcinst.ini :

[ODBC Drivers]
SnowflakeDSIIDriver=Installed

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

chemin est l’emplacement du répertoire snowflake_odbc.

4.3 : fichier odbc.ini (entrées DSN)

Pour chaque DSN, ajoutez les entrées suivantes au fichier odbc.ini :

  • Nom DSN et nom du pilote (SnowflakeDSIIDriver) au format <nom_dsn> = <nom_pilote>.

  • Paramètres :

    • Paramètres de connexion requis, tels que server.

    • Tout paramètre supplémentaire facultatif, par exemple role, database et warehouse par défaut.

    Les paramètres sont spécifiés sous forme de <nom_paramètre> = <valeur>. Pour plus de détails sur les paramètres qui peuvent être définis pour chaque DSN, voir Paramètres de configuration et de connexion ODBC.

L’exemple suivant illustre un fichier odbc.ini contenant deux pilotes, testodbc1 pour le compte xy12345 (situé dans la région AWS US Ouest) et testodbc2 pour le compte yz23456 (situé dans la région AWS US Est) :

[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

Remarques :

  • testodbc1 et testodbc2 ont des rôles par défaut.

  • testodbc2 possède également une base de données et un entrepôt par défaut.

Étape 5 : test du pilote ODBC

Testez le pilote à l’aide du gestionnaire de pilotes installé (soit iODBC ou unixODBC).

Test avec iODBC

Testez les DSNs que vous avez créés. Sur la ligne de commande, spécifiez le nom DSN, le nom d’utilisateur et le mot de passe, en utilisant le format suivant :

iodbctest "DSN=<nom_dsn>;UID=<nom_utilisateur>;PWD=<mot de passe>"

Par exemple :

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

Test avec unixODBC

Testez les DSNs que vous avez créés en utilisant l’utilitaire de ligne de commande isql fourni avec unixODBC.

Sur la ligne de commande, spécifiez le nom DSN, le nom d’utilisateur et le mot de passe.

Par exemple :

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