Linux용 ODBC 드라이버 설치 및 구성하기¶
Linux는 명명된 데이터 소스(DSNs)를 사용하여 ODBC 기반 클라이언트 애플리케이션을 Snowflake에 연결합니다. 사용자는 Snowflake Client Repository에서 제공되는 TGZ 파일, RPM 패키지 또는 DEB 패키지를 사용하여 ODBC 드라이버를 설치할 수 있습니다.
전제 조건¶
운영 체제¶
Snowflake 클라이언트에서 지원되는 운영 체제 목록은 운영 체제 지원 을 참조하십시오.
ODBC 버전 3.0.1에서는 드라이버가 CentOS 6 버전을 더 이상 지원하지 않습니다.
드라이버 관리자: iODBC 또는 unixODBC¶
Snowflake와 ODBC 드라이버 사이의 통신을 관리하려면 드라이버 관리자가 필요합니다. 드라이버는 iODBC 또는 unixODBC를 드라이버 관리자로 사용하는 것을 지원합니다.
iODBC¶
iODBC가 CentOS에 sudo 로 설치되지 않은 경우 다음 명령을 실행합니다.
yum install libiodbc
unixODBC¶
unixODBC는 드라이버 설치, 구성 및 테스트를 위해 사용되는 odbcinst 및 isql 명령줄 유틸리티를 제공합니다. unixODBC의 설치 여부를 확인하려면 다음 명령을 실행합니다.
which odbcinst
which isql
unixODBC가 설치되지 않은 경우:
sudo로, 다음 명령을 실행합니다.
yum search unixODBC yum install unixODBC.x86_64
odbcinst에서odbcinst.ini및odbc.ini파일을 찾을 수 있는 디렉터리를 확인합니다.odbcinst -j위치는
/etc여야 합니다.
1단계: 패키지 서명 확인(RPM 또는 DEB만 해당) — 선택 사항¶
참고
yum 또는 TGZ 파일 을 사용하여 ODBC 드라이버를 설치하는 경우에는 이 단계를 건너뛰십시오.
RPM 또는 DEB 패키지를 사용하여 ODBC 드라이버를 설치하고 패키지 서명을 확인한 후 설치하려면, 다음 작업을 실행하십시오.
1.1: 최신 Snowflake 공개 키 다운로드 및 가져오기¶
공개 키 서버에서 자신이 사용 중인 ODBC 드라이버 버전에 대한 Snowflake GPG 공개 키를 다운로드하고 가져옵니다.
버전 3.6.0 이상:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 2A3149C82551A34A
버전 3.5.0의 경우:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 5A125630709DD64B
버전 2.25.6부터 3.4.1까지:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 630D9F3CAB551AF3
버전 2.22.1부터 2.25.5까지:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 37C7086698CB005C
버전 2.18.2부터 2.22.0까지:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys EC218558EABB25A1
버전 2.18.1 이하:
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 93DB296A69BE019A
참고
이 명령이 다음 오류와 함께 실패하는 경우:
gpg: keyserver receive failed: Server indicated a failure
그리고 키 서버에 포트 80을 사용하도록 지정합니다.
gpg --keyserver hkp://keyserver.ubuntu.com:80 ...
1.2: RPM 또는 DEB 드라이버 패키지 다운로드¶
Snowflake Client Repository에서 패키지를 다운로드합니다. 자세한 내용은 ODBC 드라이버 다운로드하기 섹션을 참조하십시오.
1.3: RPM 또는 DEB 드라이버 패키지의 서명 확인¶
RPM 패키지 서명¶
키 가져오기가 성공했는지 확인합니다.
gpg --list-keys이 명령을 수행하면 Snowflake 키가 표시되어야 합니다.
서명을 확인합니다.
rpm -K snowflake-odbc-<version>.x86_64.rpm
참고
가져온 GPG 키가
rpm에 없으면 명령은 서명이 정상이 아님을 보고하고NOKEY경고를 생성합니다.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
이러한 경우 다음 명령을 실행하여 GPG 키를 내보내고 키를
rpm으로 가져온 후 서명을 다시 확인합니다.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
여기서,
<GPG_KEY_ID>는 1.1: 최신 Snowflake 공개 키 다운로드 및 가져오기 에 설치한 키의 ID입니다.
DEB 패키지 서명¶
패키지 서명 확인 도구를 설치합니다.
sudo apt-get install debsig-verify
공개 키를 인증 키로 가져옵니다.
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
여기서,
<GPG_KEY_ID>는 1.1: 최신 Snowflake 공개 키 다운로드 및 가져오기 에 설치한 키의 ID입니다.키에 대한 정책을 구성합니다. 자세한 내용은
/usr/share/doc/debsig-verify섹션을 참조하십시오. 정책이 저장되어야 하는 디렉터리를 다음과 같습니다./etc/debsig/policies/<GPG_KEY_ID>
여기서,
<GPG_KEY_ID>는 1.1: 최신 Snowflake 공개 키 다운로드 및 가져오기 에 설치한 키의 ID입니다.이름이
policy_name.pol인 파일에 정책을 저장합니다. 여기서,policy_name은 정책의 이름입니다. 정책 이름에는 텍스트 문자열을 사용할 수 있지만, 문자열에는 공백이 포함될 수 없습니다.ID가 2A3149C82551A34A 인 키에 대한 샘플 정책 파일은 다음과 같습니다.
<?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="2A3149C82551A34A" Description="Snowflake ODBC Driver DEB package"/> <Selection> <Required Type="origin" File="debsig.gpg" id="2A3149C82551A34A"/> </Selection> <Verification MinOptional="0"> <Required Type="origin" File="debsig.gpg" id="2A3149C82551A34A"/> </Verification> </Policy>
서명을 확인합니다.
sudo debsig-verify snowflake-odbc-<version>.x86_64.deb
참고
기본적으로 dpkg 패키지 서명 확인 도구는 사용자가 패키지를 설치할 때 서명을 확인하지 않습니다. dpkg를 실행할 때마다 서명을 확인하려면 /etc/dpkg/dpkg.cfg 파일에서 --no-debsig 라인을 제거하십시오.
1.4: 기존 Snowflake 공개 키 삭제 — 선택 사항¶
로컬 환경에는 여러 개의 GPG 키가 포함될 수 있지만, 보안상의 이유로 Snowflake는 공개 GPG 키를 주기적으로 순환합니다. 가장 좋은 방법은 서명된 최신 패키지에서 최신 키가 작동하는지 확인한 후 기존 공개 키를 삭제하는 것입니다.
키를 삭제하려면:
gpg --delete-key "Snowflake Computing"
2단계: ODBC 드라이버 설치¶
다음 방식 중 1개를 사용하여 드라이버를 설치합니다.
YUM을 사용하여 드라이버 다운로드 및 설치하기¶
ODBC 드라이버 2.21.1 이상 버전을 사용하면 yum 을 사용하여 드라이버를 다운로드 및 설치할 수 있습니다.
yum 을 사용하여 Linux용 Snowflake ODBC 드라이버를 다운로드 및 설치하려면:
이름이
/etc/yum.repos.d/snowflake-odbc.repo인 파일을 만들고 파일에 다음 텍스트를 추가합니다.[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
여기서,
VERSION_NUMBER은 드라이버의 특정 버전 번호(예: 3.11.0)이며GPG_KEY_ID는 다음 키 ID 중 하나입니다.ODBC 드라이버 버전
GPG 키 ID
3.6.0 및 그 이상
2A3149C82551A34A
3.5.0
5A125630709DD64B
2.25.6 ~ 3.4.1
630D9F3CAB551AF3
2.22.1 ~ 2.25.5
37C7086698CB005C
위의 설정에서
baseurl및gpgkey는 Amazon S3 기반 Snowflake Client Repository 를 가리킵니다. Azure Blob 상의 미러를 대신 사용하려면, 호스트 이름을https://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
다음 명령을 실행하여 드라이버를 설치합니다.
yum install snowflake-odbc
TGZ 파일 설치하기¶
이전에 다운로드한 TGZ 파일 을 사용하여 Linux용 Snowflake ODBC 드라이버를 설치하려면:
다운로드한 파일(
snowflake_linux_x8664_odbc-version.tgz)을 작업 디렉터리에 복사합니다.파일의 압축을 풉니다.
gunzip snowflake_linux_x8664_odbc-<version>.tgz
.tar 파일에서 파일을 추출합니다.
tar -xvf snowflake_linux_x8664_odbc-<version>.tar
드라이버를 설치할 디렉터리로 결과
snowflake_odbc폴더를 복사합니다. 이 디렉터리를 기록해 둡니다. 지침의 이후 부분에서 이 위치가 필요합니다.
RPM 패키지 설치하기¶
참고
RPM 패키지에는 드라이버 관리자로 unixODBC가 필요합니다.
이전에 다운로드한 RPM 패키지 를 사용하여 Linux용 Snowflake ODBC 드라이버를 설치하려면, 선택 사항으로 패키지 서명을 확인한 후에 다음 명령을 실행합니다.
yum install snowflake-odbc-<version>.x86_64.rpm
참고
설치 디렉터리는 /usr/lib64/snowflake/odbc/ 입니다. 지침의 이후 부분에서 이 위치가 필요합니다.
드라이버가 라이브러리를 찾을 수 없으면 Unable to locate SQLGetPrivateProfileString function 오류가 표시됩니다. 이 경우 시스템의 드라이버 관리자 이름을 사용하여 simba.snowflake.ini 구성 파일에서 ODBCInstLib=<driver_manager_path> 를 수동으로 설정해야 합니다. 자세한 내용은 ODBC 드라이버 구성하기 를 참조하십시오.
예: ODBCInstLib=/usr/lib/x86_64-linux-gnu/libodbcinst.so.2.
DEB 패키지 설치하기¶
참고
DEB 패키지에는 드라이버 관리자로 unixODBC가 필요합니다. DEB 패키지를 설치하려고 하기 전에 unixodbc 및 odbcinst 패키지가 설치되어 있는지 확인하세요.
이전에 다운로드한 DEB 패키지 를 사용하여 Linux용 Snowflake ODBC 드라이버를 설치하려면, 선택 사항으로 패키지 서명을 확인한 후에 다음 명령을 실행합니다.
sudo SF_ACCOUNT="<account>" dpkg -i snowflake-odbc-<version>.x86_64.deb
SF_ACCOUNT 변수가 설정되지 않은 경우 dpkg 명령에 경고가 표시됩니다. 아래와 같이 변수를 설정하면 odbc.ini 파일에 Snowflake 연결이 추가됩니다.
패키지 관리자에 필요한 종속성이 설치되지 않은 경우 명령이 실패할 수 있습니다. 그러한 경우 지금 설치합니다.
sudo apt-get install -f
참고
설치 디렉터리는 /usr/lib/snowflake/odbc/ 입니다. 지침의 이후 부분에서 이 위치가 필요합니다.
3단계: 환경 구성(TGZ만 해당)¶
참고
RPM 또는 DEB 패키지 파일을 사용하여 ODBC 드라이버를 설치한 경우에는 이 단계를 건너뛰십시오.
TGZ 파일을 사용하여 설치한 경우에는, 설치한 드라이버 관리자(iODBC 또는 unixODBC)를 사용하여 환경을 구성합니다.
iODBC로 구성하기¶
터미널 창에서 snowflake_odbc 디렉터리를 변경하고 다음 명령을 실행하여 Snowflake ODBC를 설치합니다.
./iodbc_setup.sh
이 스크립트에서 수행되는 단계는 다음과 같습니다.
사용자의 시스템 수준
/etc/odbc.ini파일에 Snowflake 연결 1개를 추가합니다.사용자의 시스템 수준
/etc/odbcinst.ini파일에 Snowflake 드라이버 정보를 추가합니다.Snowflake ODBC 드라이버에 필요한 모든 인증 기관(CA) 인증서를 사용자의 시스템 수준
simba.snowflake.ini파일에 추가합니다.
iodbc_setup.sh 를 실행하면 환경 변수를 설정할 필요가 없습니다.
또는 Snowflake가 시스템 구성을 변경하지 않도록 하려면 셸 구성 파일(예: .profile, .bash_profile)에 다음 환경 변수를 추가합니다.
ODBCINI = <경로>/conf/odbc.ini
ODBCINSTINI = <경로>/conf/odbcinst.ini
여기서 path 는 snowflake_odbc 디렉터리의 위치입니다. 시스템에 다른 ODBC 드라이버를 구성하고 다음 단계에서 기존 odbc.ini 및 odbcinst.ini 파일에 Snowflake ODBC 항목을 추가하려면, ODBCINI 및 ODBCINSTINI가 해당 파일의 위치를 가리키도록 합니다.
unixODBC로 구성하기¶
터미널 창에서 snowflake_odbc 디렉터리를 변경하고 다음 명령을 실행하여 Snowflake ODBC를 설치합니다.
./unixodbc_setup.sh
이 스크립트에서 수행되는 단계는 다음과 같습니다.
사용자의 시스템 수준
/etc/odbc.ini파일에 Snowflake 연결 1개를 추가합니다.사용자의 시스템 수준
/etc/odbcinst.ini파일에 Snowflake 드라이버 정보를 추가합니다.Snowflake ODBC 드라이버에 필요한 모든 인증 기관(CA) 인증서를 사용자의 시스템 수준
simba.snowflake.ini파일에 추가합니다.
unixodbc_setup.sh 를 실행하면 환경 변수를 설정할 필요가 없습니다.
또는 Snowflake가 시스템 구성을 변경하지 않도록 하려면 셸 구성 파일(예: .profile, .bash_profile)에 다음 환경 변수를 추가합니다.
ODBCSYSINI = <경로>/conf/
여기서 path 는 snowflake_odbc 디렉터리의 위치입니다. 시스템에 다른 ODBC 드라이버를 구성하고 다음 단계에서 기존 odbc.ini 및 odbcinst.ini 파일에 Snowflake ODBC 항목을 추가하려면, ODBCSYSINI가 해당 파일의 위치를 가리키도록 합니다.
4단계: ODBC 드라이버 구성¶
ODBC 드라이버를 구성하려면 다음 파일에 항목을 추가해야 합니다.
<경로>/lib/simba.snowflake.ini/etc/odbcinst.ini(또는<경로>/conf/odbc.ini, 환경 변수를 사용하는 경우)/etc/odbc.ini(또는<경로>/conf/odbcinst.ini, 환경 변수를 사용하는 경우)
여기서 path 는 snowflake_odbc 디렉터리의 위치입니다.
4.1: simba.snowflake.ini 파일(드라이버 관리자 및 로깅)¶
다음 항목을 simba.snowflake.ini 파일에 추가합니다.
ErrorMessagesPath=<path>/ErrorMessages/ LogPath=/tmp/ ODBCInstLib=<driver_manager_path> CABundleFile=<path>/lib/cacert.pem ANSIENCODING=UTF-8
여기서
path는snowflake_odbc디렉터리의 위치입니다.
driver_manager_path는 드라이버 관리자 디렉터리의 위치입니다.
iODBC:
ODBCInstLib=libiodbcinst.so.2unixODBC:
ODBCInstLib=libodbcinst.so참고
드라이버 관리자 디렉터리가
LD_LIBRARY_PATH환경 변수에 포함되지 않은 경우, 드라이버 관리자 라이브러리로의 전체 경로를 여기에 지정합니다.
로그 경로에 대한 권한을 작성했는지 확인합니다.
ANSIENCODING 매개 변수는 애플리케이션의 문자 인코딩을 지정합니다. 기본값은 UTF-8 입니다. 이 매개 변수는 Snowflake에서만 사용해야 하며, 고객은 값을 변경하지 말아야 합니다.
4.2: odbcinst.ini 파일(드라이버 등록)¶
다음 항목을 odbcinst.ini 파일에 추가합니다.
[ODBC Drivers] SnowflakeDSIIDriver=Installed [SnowflakeDSIIDriver] APILevel=1 ConnectFunctions=YYY Description=Snowflake DSII Driver=/<path>/lib/libSnowflake.so DriverODBCVer=03.52 SQLLevel=1
여기서 path 는 snowflake_odbc 디렉터리의 위치입니다.
4.3: odbc.ini 파일(DSN 항목)¶
각 DSN에 대하여, 다음 항목을 odbc.ini 파일에 추가합니다.
<dsn_이름> = <드라이버_이름>형식의 DSN 이름 및 드라이버 이름(SnowflakeDSIIDriver).매개 변수:
필수 연결 매개 변수, 예:
server.선택적인 모든 추가 매개 변수, 예: 기본
role,database및warehouse.
매개 변수는
<매개 변수_이름> = <값>의 형식으로 지정됩니다. 각 DSN에 대하여 설정할 수 있는 매개 변수에 대한 자세한 내용은 ODBC 구성 및 연결 매개 변수 를 참조하십시오.
다음 예는 server URL에 계정 식별자 의 다른 형식을 사용하는 데이터 소스 2개를 구성하는 odbc.ini 파일을 보여줍니다.
testodbc1은 조직myorganization의 계정myaccount에 대한 식별자로 계정 이름 을 사용합니다.testodbc2에서는 계정 로케이터xy12345를 계정 식별자로 사용합니다.testodbc2에서는 AWS US 서부(오레곤) 리전의 계정을 사용함에 유의하십시오. 계정이 다른 리전에 있거나 계정이 다른 클라우드 공급자를 사용하는 경우 계정 로케이터 다음에 추가 세그먼트를 지정 해야 합니다.[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
다음 사항을 참고하십시오.
testodbc1및testodbc2모두에 기본 역할이 있습니다.testodbc2에도 기본 데이터베이스 및 웨어하우스가 있습니다.
5단계: ODBC 드라이버 테스트¶
설치된 드라이버 관리자(iODBC 또는 unixODBC)를 사용하여 드라이버를 테스트합니다.
iODBC로 테스트하기¶
생성한 DSNs를 테스트합니다. 명령줄에 DSN 이름, 사용자 로그인 이름 및 비밀번호를 다음 형식으로 지정합니다.
iodbctest "DSN=<dsn_이름>;UID=<사용자_이름>;PWD=<비밀번호>"
예:
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>
unixODBC로 테스트하기¶
unixODBC 에서 제공되는 isql 명령줄 유틸리티를 사용하여 생성한 DSNs를 테스트합니다.
명령줄에 DSN 이름, 사용자 로그인 이름 및 비밀번호를 지정합니다.
예:
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>