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.
Avec ODBC version 3.0.1, le pilote ne prend en charge plus les versions 6 de CentOS.
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é :
En tant que
sudo
, exécutez les commandes suivantes :$ yum search unixODBC $ yum install unixODBC.x86_64
Vérifiez le répertoire où
odbcinst
s’attend à ce que les fichiersodbcinst.ini
etodbc.ini
se trouvent :$ odbcinst -j
L’emplacement devrait être
/etc
.
Étape 1 : vérification de la signature du paquet (RPM ou DEB uniquement) — Facultatif¶
Note
Si vous installez le pilote ODBC en utilisant yum
ou 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¶
Depuis le serveur de clés publiques, téléchargez et importez la clé publique Snowflake GPG pour la version du pilote ODBC que vous utilisez :
Pour les versions 2.25.6 et supérieures :
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 630D9F3CAB551AF3
Pour les versions 2.22.1 à 2.25.5 :
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 37C7086698CB005C
Pour les versions 2.18.2 à 2.22.0 :
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys EC218558EABB25A1
Pour les versions 2.18.1 et inférieures :
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 93DB296A69BE019A
Note
Si cette commande échoue avec l’erreur suivante :
gpg: keyserver receive failed: Server indicated a failure
puis spécifiez que vous voulez utiliser le port 80 pour le serveur de clés :
gpg --keyserver hkp://keyserver.ubuntu.com:80 ...
1.2 : téléchargement du paquet 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 paquet de pilote RPM ou DEB¶
Signature du paquet RPM¶
Vérifiez que la clé a été importée avec succès :
$ gpg --list-keys
La commande doit afficher la clé Snowflake.
Vérifiez la signature :
$ rpm -K snowflake-odbc-<version>.x86_64.rpm
Note
Si
rpm
n’a pas la clé GPG que vous avez importée, la commande signalera que les signatures ne sont pas OK et produira un avertissementNOKEY
:$ 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
Si cela se produit, exécutez les commandes suivantes pour exporter la clé GPG, importez la clé dans
rpm
et vérifiez à nouveau la signature :$ 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
où
<GPG_KEY_ID>
est l’ID de la clé que vous avez installée dans 1.1 : téléchargement et importation de la dernière clé publique Snowflake.
Signature du paquet DEB¶
Installez l’outil de vérification de la signature du pack :
$ sudo apt-get install debsig-verify
Importez la clé publique vers le « trousseau » :
$ 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
où
<GPG_KEY_ID>
est l’ID de la clé que vous avez installée dans 1.1 : téléchargement et importation de la dernière clé publique Snowflake.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/<GPG_KEY_ID>
où
<GPG_KEY_ID>
est l’ID de la clé que vous avez installée dans 1.1 : téléchargement et importation de la dernière clé publique Snowflake.Stockez la politique dans un fichier nommé
policy_name.pol
, oùpolicy_name
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 politique pour une clé avec l’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>
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’une des approches suivantes :
Utilisation de yum pour télécharger et installer le pilote¶
Avec la version 2.21.1 du pilote ODBC (et versions ultérieures), vous pouvez utiliser yum
pour télécharger et installer le pilote.
Pour télécharger et installer le pilote ODBCde Snowflake pour Linux en utilisant yum
:
Créez un fichier nommé
/etc/yum.repos.d/snowflake-odbc.repo
, et ajoutez le texte suivant au fichier :[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
où
VERSION_NUMBER
est le numéro de version spécifique du pilote (par exemple, 3.2.0) etGPG_KEY_ID
est l’un des IDs de clés suivants :Version du pilote ODBC
ID de clé GPG
2.22.1 et supérieur
630D9F3CAB551AF3
Dans les paramètres ci-dessus,
baseurl
etgpgkey
pointent vers le Snowflake Client Repository sur Amazon S3. Si vous voulez utiliser le miroir sur Azure Blob à la place, remplacez le nom d’hôte parhttps://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
Exécutez la commande suivante pour installer le pilote :
yum install snowflake-odbc
Installation du fichier TGZ¶
Pour installer le pilote ODBC de Snowflake pour Linux en utilisant le fichier TGZ que vous avez téléchargé précédemment.
Copiez le fichier téléchargé (
snowflake_linux_x8664_odbc-version.tgz
) dans un répertoire fonctionnel.Décompressez le fichier :
$ gunzip snowflake_linux_x8664_odbc-<version>.tgz
Extrayez les fichiers du fichier.tar :
$ tar -xvf snowflake_linux_x8664_odbc-<version>.tar
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 paquet 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 que vous avez téléchargé précédemment, après avoir vérifié éventuellement 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.
Si le pilote ne trouve pas la bibliothèque, il affiche une erreur Unable to locate SQLGetPrivateProfileString function
. Dans ce cas, vous devez définir ODBCInstLib=<driver_manager_path>
manuellement dans le fichier de configuration simba.snowflake.ini
avec le nom du gestionnaire de pilotes sur votre système. Pour plus d’informations, voir Configurer le pilote ODBC.
Par exemple, ODBCInstLib=/usr/lib/x86_64-linux-gnu/libodbcinst.so.2
.
Installation du paquet 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 que vous avez téléchargé précédemment, après avoir vérifié éventuellement 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
Où path
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/
Où path
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)
Où path
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ù :
path
est l’emplacement du répertoiresnowflake_odbc
.
driver_manager_path
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
Où path
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
etwarehouse
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
qui configure deux sources de données qui utilisent différentes formes d’un identificateur de compte dans l”server
URL :
testodbc1
utilise un identificateur de compte qui utilise un identificateur de compte qui spécifie le comptemyaccount
dans l’organisationmyorganization
.testodbc2
utilise le localisateur de comptexy12345
comme identificateur de compte.Notez que
testodbc2
utilise un compte dans la région AWS US Ouest (Oregon). Si le compte se trouve dans une autre région ou s’il utilise un autre fournisseur Cloud, vous devez spécifier des segments supplémentaires après le localisateur de compte.[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
Remarques :
testodbc1
ettestodbc2
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>