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 공개 키를 다운로드하고 가져옵니다.
버전 2.25.6 이상:
$ 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가 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>
서명을 확인합니다.
$ 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.2.0)이며GPG_KEY_ID
는 다음 키 ID 중 하나입니다.ODBC 드라이버 버전
GPG 키 ID
2.22.1 이상
630D9F3CAB551AF3
위의 설정에서
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 패키지 를 사용하여 Linux용 Snowflake ODBC 드라이버를 설치하려면, 선택 사항으로 패키지 서명을 확인한 후에 다음 명령을 실행합니다.
$ sudo dpkg -i snowflake-odbc-<version>.x86_64.deb
패키지 관리자에 대한 필수 종속성이 설치되어 있지 않으면 명령이 실패할 수 있습니다. 그러한 경우 지금 설치합니다.
$ 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.2
unixODBC:
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>