Linux에서의 ODBC API

Linux에서의 ODBC API (ODBC API on Linux)

DuckDB ODBC 드라이버를 Linux에서 설정하고 사용하는 방법을 안내해요.

출처: 문서

본문

드라이버 매니저 (Driver Manager)

애플리케이션과 ODBC 드라이버 사이의 통신을 관리하려면 드라이버 매니저가 필요해요. 우리는 Linux용 완전한 ODBC 드라이버 매니저인 unixODBC를 테스트했고 지원해요. 사용자는 명령줄에서 설치할 수 있어요.

Debian 계열 배포판(Ubuntu, Mint 등)에서는:

sudo apt-get install unixodbc odbcinst

Fedora 계열 배포판(Amazon Linux, RHEL, CentOS 등)에서는:

sudo yum install unixODBC

드라이버 설정 (Setting Up the Driver)

  1. 아키텍처에 해당하는 ODBC Linux 자산을 다운로드해요.

    (다운로드 링크의 {RELEASE}는 실제 DuckDB ODBC 릴리스 버전으로 대체돼요.)

  2. 패키지에는 다음 파일이 들어 있어요.

    • libduckdb_odbc.so: DuckDB 드라이버.
    • unixodbc_setup.sh: Linux에서 구성을 돕는 설정 스크립트.

    이 파일들을 추출하려면:

    mkdir duckdb_odbc && unzip duckdb_odbc-linux-amd64.zip -d duckdb_odbc
    
  3. unixodbc_setup.sh 스크립트는 DuckDB ODBC 드라이버의 구성을 수행해요. 이는 odbcinstisql 같은 ODBC 설정과 테스트를 처리하는 명령을 제공하는 unixODBC 패키지에 기반해요.

    -u 또는 -s 옵션 중 하나로 다음 명령을 실행해 DuckDB ODBC를 구성해요.

    -u 옵션은 사용자 홈 디렉터리를 기반으로 ODBC 초기화 파일을 설정해요.

    ./unixodbc_setup.sh -u
    

    -s 옵션은 모든 사용자에게 보이는 시스템 수준 파일을 변경해요. 그래서 root 권한이 필요해요.

    sudo ./unixodbc_setup.sh -s
    

    --help 옵션은 unixodbc_setup.sh의 사용법과 도움말을 보여줘요.

    ./unixodbc_setup.sh --help
    
    Usage: ./unixodbc_setup.sh <level> [options]
    
    Example: ./unixodbc_setup.sh -u -db ~/database_path -D ~/driver_path/libduckdb_odbc.so
    
    Level:
    -s: System-level, using 'sudo' to configure DuckDB ODBC at the system-level, changing the files: /etc/odbc[inst].ini
    -u: User-level, configuring the DuckDB ODBC at the user-level, changing the files: ~/.odbc[inst].ini.
    
    Options:
    -db database_path>: the DuckDB database file path, the default is ':memory:' if not provided.
    -D driver_path: the driver file path (i.e., the path for libduckdb_odbc.so), the default is using the base script directory
    
  4. Linux에서의 ODBC 설정은 .odbc.ini.odbcinst.ini 파일에 기반해요.

    이 파일들은 사용자 홈 디렉터리 /home/⟨username⟩ 또는 시스템 /etc 디렉터리에 놓을 수 있어요. 드라이버 매니저는 시스템 파일보다 사용자 구성 파일을 우선시해요.

    구성 파라미터에 대한 자세한 내용은 ODBC 구성 페이지를 참고해요.

더 알아보기 (Learn more)