Instalação e configuração do driver ODBC para Linux¶
O Linux usa fontes de dados nomeadas (DSNs) para conectar aplicativos clientes baseados no ODBC ao Snowflake. Você pode optar por instalar o driver ODBC usando o arquivo TGZ, o pacote RPM ou o pacote DEB oferecido no Snowflake Client Repository.
Neste tópico:
Pré-requisitos¶
Sistema operacional¶
Para obter uma lista dos sistemas operacionais compatíveis com os clientes Snowflake, consulte Suporte ao sistema operacional.
Com ODBC versão 3.0.1, o driver não suporta mais versões do CentOS 6.
Gerenciador de driver: iODBC ou unixODBC¶
Um gerenciador de driver é necessário para gerenciar a comunicação entre o Snowflake e o driver ODBC. O driver oferece suporte ao uso do iODBC ou do unixODBC como gerenciador de driver.
iODBC¶
Se o iODBC não estiver instalado no CentOS, como sudo
, execute o seguinte comando:
$ yum install libiodbc
unixODBC¶
O unixODBC fornece os utilitários de linha de comando odbcinst
e isql
usados para instalar, configurar e testar o driver. Para verificar se o unixODBC está instalado, execute os seguintes comandos:
$ which odbcinst $ which isql
Se o unixODBC não estiver instalado:
Como
sudo
, execute os seguintes comandos:$ yum search unixODBC $ yum install unixODBC.x86_64
Verifique o diretório onde
odbcinst
espera que os arquivosodbcinst.ini
eodbc.ini
estejam localizados:$ odbcinst -j
A localização deve ser
/etc
.
Etapa 1: verificar a assinatura do pacote (somente RPM ou DEB) — opcional¶
Nota
Se você estiver instalando o driver ODBC usando yum
ou o arquivo TGZ, pule esta etapa.
Se você estiver instalando o driver ODBC usando o pacote RPM ou DEB e quiser verificar a assinatura do pacote antes da instalação, execute as seguintes tarefas:
1.1: Baixar e importar a última chave pública do Snowflake¶
A partir do servidor de chaves públicas, baixe e importe a chave pública do Snowflake GPG para a versão do ODBC que você está usando:
Para a versão 2.25.6 e superior:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 630D9F3CAB551AF3
Para a versão 2.22.1 a 2.25.5:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 37C7086698CB005C
Para a versão 2.18.2 até 2.22.0:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys EC218558EABB25A1
Para a versão 2.18.1 e inferior:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 93DB296A69BE019A
Nota
Se esse comando falhar com o seguinte erro:
gpg: keyserver receive failed: Server indicated a failure
depois especifique que você deseja usar a porta 80 para o servidor de chaves:
gpg --keyserver hkp://keyserver.ubuntu.com:80 ...
1.2: Baixar o pacote RPM ou DEB do driver¶
Baixe o pacote no Snowflake Client Repository. Para obter mais detalhes, consulte Download do driver ODBC.
1.3: Verificar a assinatura do pacote RPM ou DEB do driver¶
Assinatura do pacote RPM¶
Verifique se a chave foi importada com sucesso:
$ gpg --list-keys
O comando deve exibir a chave do Snowflake.
Verifique a assinatura:
$ rpm -K snowflake-odbc-<version>.x86_64.rpm
Nota
Se
rpm
não tiver a chave GPG que você importou, o comando informará que as assinaturas não são OK e vai gerar um avisoNOKEY
:$ 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
Se isso ocorrer, execute os seguintes comandos para exportar a chave GPG, importar a chave para o
rpm
e verificar novamente a assinatura:$ 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
onde
<GPG_KEY_ID>
é a ID da chave que você instalou em 1.1: Baixar e importar a última chave pública do Snowflake.
Assinatura do pacote DEB¶
Instale a ferramenta de verificação de assinatura do pacote:
$ sudo apt-get install debsig-verify
Importe a chave pública para o token de autenticação:
$ 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
onde
<GPG_KEY_ID>
é a ID da chave que você instalou em 1.1: Baixar e importar a última chave pública do Snowflake.Configure uma política para a chave. Para obter mais detalhes, consulte
/usr/share/doc/debsig-verify
. A política deve ser armazenada no diretório a seguir:/etc/debsig/policies/<GPG_KEY_ID>
onde
<GPG_KEY_ID>
é a ID da chave que você instalou em 1.1: Baixar e importar a última chave pública do Snowflake.Armazene a política em um arquivo chamado
policy_name.pol
, ondepolicy_name
é o nome da política. Para o nome da política, você pode usar qualquer cadeia de caracteres, porém a cadeia não pode conter espaços em branco.Aqui está um exemplo de arquivo de política de uma chave com a 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>
Verifique a assinatura:
$ sudo debsig-verify snowflake-odbc-<version>.x86_64.deb
Nota
Por padrão, a ferramenta de verificação de assinatura do pacote dpkg não verifica a assinatura quando você instala o pacote. Se você quiser verificar a assinatura toda vez que executar o dpkg, remova a linha --no-debsig
no arquivo /etc/dpkg/dpkg.cfg
.
1.4: Apagar a chave pública antiga do Snowflake — opcional¶
Seu ambiente local pode conter múltiplas chaves GPG. Entretanto, por razões de segurança, o Snowflake alterna periodicamente a chave pública GPG. Nossa prática recomendada é excluir a chave pública existente depois de confirmar que a última chave funciona com o último pacote assinado.
Para excluir a chave:
$ gpg --delete-key "Snowflake Computing"
Etapa 2: Instalar o driver ODBC¶
Instale o driver usando uma das seguintes abordagens:
Download e instalação do driver usando o yum¶
Com a versão 2.21.1 do driver ODBC (e versões posteriores), você pode usar o yum
para baixar e instalar o driver.
Para baixar e instalar o driver ODBC do Snowflake para Linux usando o yum
:
Crie um arquivo chamado
/etc/yum.repos.d/snowflake-odbc.repo
e adicione o seguinte texto ao arquivo:[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
em que
VERSION_NUMBER
é o número da versão específica do driver (por exemplo, 3.2.0) eGPG_KEY_ID
é uma das seguintes IDs de chave:Versão do driver ODBC
ID de chave GPG
2.22.1 e superior
630D9F3CAB551AF3
Nas configurações acima,
baseurl
egpgkey
apontam para o Snowflake Client Repository no Amazon S3. Se você quiser usar o espelho nos blobs do Azure, mude o nome de host parahttps://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
Execute o seguinte comando para instalar o driver:
yum install snowflake-odbc
Instalação do arquivo TGZ¶
Para instalar o driver ODBC do Snowflake para Linux usando o arquivo TGZ que você baixou anteriormente.
Copie o arquivo baixado (
snowflake_linux_x8664_odbc-version.tgz
) para um diretório de trabalho.Descompacte o arquivo:
$ gunzip snowflake_linux_x8664_odbc-<version>.tgz
Extraia os arquivos do arquivo .tar:
$ tar -xvf snowflake_linux_x8664_odbc-<version>.tar
Copie a pasta
snowflake_odbc
resultante para o diretório onde você deseja instalar o driver. Anote o nome desse diretório. Você precisará do local mais adiante nas instruções.
Instalação do pacote RPM¶
Nota
O pacote RPM requer o unixODBC como gerenciador de driver.
Para instalar o driver ODBC do Snowflake para Linux usando o pacote RPM que você baixou anteriormente, depois de verificar opcionalmente a assinatura do pacote, execute o seguinte comando:
$ yum install snowflake-odbc-<version>.x86_64.rpm
Nota
O diretório de instalação é /usr/lib64/snowflake/odbc/
. Você precisará do local mais adiante nas instruções.
Se o driver não conseguir encontrar a biblioteca, ele exibirá um erro Unable to locate SQLGetPrivateProfileString function
. Nesse caso, você deve definir ODBCInstLib=<driver_manager_path>
manualmente no arquivo de configuração simba.snowflake.ini
com o nome do gerenciador de driver em seu sistema. Para obter mais informações, consulte Configuração do driver ODBC.
Por exemplo, ODBCInstLib=/usr/lib/x86_64-linux-gnu/libodbcinst.so.2
.
Instalação do pacote DEB¶
Nota
O pacote DEB requer o unixODBC como gerenciador de driver.
Para instalar o driver ODBC do Snowflake para Linux usando o pacote DEB que você baixou anteriormente, depois de verificar opcionalmente a assinatura do pacote, execute o seguinte comando:
$ sudo dpkg -i snowflake-odbc-<version>.x86_64.deb
O comando pode falhar se alguma dependência necessária para o gerenciador de pacotes não for instalada. Se isso acontecer, instale-as agora:
$ sudo apt-get install -f
Nota
O diretório de instalação é /usr/lib/snowflake/odbc/
. Você precisará do local mais adiante nas instruções.
Etapa 3: configurar o ambiente (somente TGZ)¶
Nota
Se você instalou o driver ODBC usando o arquivo do pacote RPM ou DEB, pule esta etapa.
Se você instalou usando o arquivo TGZ, configure o ambiente usando o gerenciador de driver instalado (iODBC ou unixODBC).
Configuração com o iODBC¶
Em uma janela do terminal, mude para o diretório snowflake_odbc
e execute o seguinte comando para instalar o ODBC do Snowflake:
$ ./iodbc_setup.sh
Esse script realiza as seguintes etapas:
Adiciona uma conexão do Snowflake ao seu arquivo
/etc/odbc.ini
de nível de sistema.Adiciona as informações do driver do Snowflake ao seu arquivo
/etc/odbcinst.ini
de nível de sistema.Adiciona todos os certificados da autoridade de certificação (CA) exigidos pelo driver ODBC do Snowflake ao seu arquivo
simba.snowflake.ini
de nível de sistema.
Ao executar iodbc_setup.sh
, você não precisa definir nenhuma variável de ambiente.
Alternativamente, se você não quiser que o Snowflake mude suas configurações de sistema, adicione as seguintes variáveis de ambiente ao seu arquivo de configuração do shell (por exemplo, .profile
, .bash_profile
):
ODBCINI = <caminho>/conf/odbc.ini
ODBCINSTINI = <caminho>/conf/odbcinst.ini
Onde path
é a localização do diretório snowflake_odbc
. Se você tiver configurado outros drivers ODBC em seu sistema e planejar adicionar as entradas ODBC do Snowflake aos arquivos odbc.ini
e odbcinst.ini
existentes na próximo etapa, então aponte ODBCINI e ODBCINSTINI para a localização desses arquivos.
Configuração com o unixODBC¶
Em uma janela do terminal, mude para o diretório snowflake_odbc
e execute o seguinte comando para instalar o ODBC do Snowflake:
$ ./unixodbc_setup.sh
Esse script realiza as seguintes etapas:
Adiciona uma conexão do Snowflake ao seu arquivo
/etc/odbc.ini
de nível de sistema.Adiciona as informações do driver do Snowflake ao seu arquivo
/etc/odbcinst.ini
de nível de sistema.Adiciona todos os certificados da autoridade de certificação (CA) exigidos pelo driver ODBC do Snowflake ao seu arquivo
simba.snowflake.ini
de nível de sistema.
Ao executar unixodbc_setup.sh
, você não precisa definir nenhuma variável de ambiente.
Alternativamente, se você não quiser que o Snowflake mude suas configurações de sistema, adicione as seguintes variáveis de ambiente ao seu arquivo de configuração do shell, por exemplo .profile
, .bash_profile
:
ODBCSYSINI = <caminho>/conf/
Onde path
é a localização do diretório snowflake_odbc
. Se você configurou outros ODBC drivers em seu sistema e planeja adicionar as entradas ODBC do Snowflake aos seus arquivos odbc.ini
e odbcinst.ini
existentes no próximo passo, então aponte ODBCSYSINI para a localização desses arquivos.
Etapa 4: Configurar o driver ODBC¶
A configuração do driver ODBC requer a adição de entradas aos seguintes arquivos:
<caminho>/lib/simba.snowflake.ini
/etc/odbcinst.ini
(ou<caminho>/conf/odbc.ini
, se você estiver usando variáveis de ambiente)/etc/odbc.ini
(ou<caminho>/conf/odbcinst.ini
, se você estiver usando variáveis de ambiente)
Onde path
é a localização do diretório snowflake_odbc
.
4.1: Arquivo simba.snowflake.ini
(gerenciador de driver e registro em log)¶
Adicione as seguintes entradas ao arquivo simba.snowflake.ini
:
ErrorMessagesPath=<path>/ErrorMessages/ LogPath=/tmp/ ODBCInstLib=<driver_manager_path> CABundleFile=<path>/lib/cacert.pem ANSIENCODING=UTF-8
Onde:
path
é a localização do diretóriosnowflake_odbc
.
driver_manager_path
é a localização do diretório do gerenciador de driver:
iODBC:
ODBCInstLib=libiodbcinst.so.2
unixODBC:
ODBCInstLib=libodbcinst.so
Nota
Se o diretório do gerenciador de driver não estiver incluído na variável de ambiente
LD_LIBRARY_PATH
, especifique aqui o caminho completo para a biblioteca do gerenciador de driver.
Verifique se você tem permissões de gravação no caminho do log.
O parâmetro ANSIENCODING
especifica a codificação de caracteres do aplicativo. O padrão é UTF-8
. O parâmetro é destinado ao uso somente pelo Snowflake. Os clientes não devem alterar o valor.
4.2: Arquivo odbcinst.ini
(registro do driver)¶
Adicione as seguintes entradas ao arquivo odbcinst.ini
:
[ODBC Drivers] SnowflakeDSIIDriver=Installed [SnowflakeDSIIDriver] APILevel=1 ConnectFunctions=YYY Description=Snowflake DSII Driver=/<path>/lib/libSnowflake.so DriverODBCVer=03.52 SQLLevel=1
Onde path
é a localização do diretório snowflake_odbc
.
4.3: Arquivo odbc.ini
(entradas DSN)¶
Para cada DSN, adicione as seguintes entradas ao arquivo odbc.ini
:
DSN Nome e nome do driver (SnowflakeDSIIDriver), na forma de
<nome_dsn> = <nome_driver>
.Parâmetros:
Parâmetros de conexão necessários, tais como
server
.Qualquer parâmetro adicional e opcional, como
role
,database
ewarehouse
padrão.
Os parâmetros são especificados no formato
<nome_parâmetro> = <valor>
. Para obter mais detalhes sobre os parâmetros que podem ser definidos para cada DSN, consulte Parâmetros de configuração e conexão do ODBC.
O exemplo a seguir ilustra um arquivo odbc.ini
que configura duas fontes de dados que utilizam formas diferentes de um identificador de conta no server
URL:
testodbc1
usa um identificador de conta que usa um identificador de conta que especifica a contamyaccount
na organizaçãomyorganization
.testodbc2
usa o localizador de contaxy12345
como identificador de conta.Note que
testodbc2
utiliza uma conta no AWS na região Oeste dos US (Oregon). Se a conta estiver em uma região diferente ou se a conta usar um provedor de nuvem diferente, será necessário especificar segmentos adicionais após o localizador de conta.[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
Observe o seguinte:
Ambos
testodbc1
etestodbc2
têm funções padrão.testodbc2
também tem um banco de dados e um warehouse padrão.
Etapa 5: Testar o driver ODBC¶
Teste o driver usando o gerenciador de driver instalado (iODBC ou unixODBC).
Teste com o iODBC¶
Teste as DSNs que você criou. Na linha de comando, especifique o nome da DSN, nome de login de usuário e senha do usuário, usando o seguinte formato:
iodbctest "DSN=<nome_dsn>;UID=<nome_usuário>;PWD=<senha>"
Por exemplo:
$ 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>
Teste com o unixODBC¶
Teste as DSNs que você criou usando o utilitário de linha de comando isql
fornecido com o unixODBC
.
Na linha de comando, especifique o nome da DSN, o nome de login de usuário e a senha do usuário.
Por exemplo:
$ 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>