메인 콘텐츠로 건너뛰기
ODBC를 통해 연결된 테이블을 반환합니다.

구문

odbc(datasource, external_database, external_table)
odbc(datasource, external_table)
odbc(named_collection)

인수

인수설명
datasourceodbc.ini 파일에서 연결 설정이 들어 있는 섹션의 이름입니다.
external_database외부 DBMS에 있는 데이터베이스 이름입니다.
external_tableexternal_database에 있는 테이블 이름입니다.
이러한 매개변수는 이름이 지정된 컬렉션을 사용해 전달할 수도 있습니다. ODBC 연결을 안전하게 처리하기 위해 ClickHouse는 별도의 프로그램인 clickhouse-odbc-bridge를 사용합니다. ODBC 드라이버를 clickhouse-server에서 직접 로드하면 드라이버 문제로 인해 ClickHouse 서버가 비정상 종료될 수 있습니다. ClickHouse는 필요할 때 clickhouse-odbc-bridge를 자동으로 시작합니다. ODBC 브리지 프로그램은 clickhouse-server와 같은 패키지에 포함되어 설치됩니다. 외부 테이블에서 NULL 값을 가진 필드는 기본 데이터 타입의 기본값으로 변환됩니다. 예를 들어 원격 MySQL 테이블 필드의 타입이 INT NULL이면 0으로 변환됩니다(ClickHouse Int32 데이터 타입의 기본값).

사용 예시

ODBC를 통해 로컬 MySQL 설치에서 데이터 가져오기 이 예시는 Ubuntu Linux 18.04 및 MySQL server 5.7에서 검증되었습니다. unixODBC와 MySQL Connector가 설치되어 있는지 확인하십시오. 기본적으로(패키지로 설치한 경우) ClickHouse는 clickhouse 사용자로 시작됩니다. 따라서 MySQL server에서 이 사용자를 생성하고 구성해야 합니다.
$ sudo mysql
mysql> CREATE USER 'clickhouse'@'localhost' IDENTIFIED BY 'clickhouse';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'clickhouse'@'clickhouse' WITH GRANT OPTION;
그런 다음 /etc/odbc.ini에서 연결을 설정합니다.
$ cat /etc/odbc.ini
[mysqlconn]
DRIVER = /usr/local/lib/libmyodbc5w.so
SERVER = 127.0.0.1
PORT = 3306
DATABASE = test
USERNAME = clickhouse
PASSWORD = clickhouse
unixODBC 설치에 포함된 isql 유틸리티를 사용하여 연결을 확인할 수 있습니다.
$ isql -v mysqlconn
+-------------------------+
| Connected!                            |
|                                       |
...
MySQL 테이블:
mysql> CREATE TABLE `test`.`test` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `int_nullable` INT NULL DEFAULT NULL,
    ->   `float` FLOAT NOT NULL,
    ->   `float_nullable` FLOAT NULL DEFAULT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

mysql> insert into test (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)

mysql> select * from test;
+------+----------+-----+----------+
| int_id | int_nullable | float | float_nullable |
+------+----------+-----+----------+
|      1 |         NULL |     2 |           NULL |
+------+----------+-----+----------+
1 row in set (0,00 sec)
ClickHouse에서 MySQL 테이블 데이터를 가져오기:
SELECT * FROM odbc('DSN=mysqlconn', 'test', 'test')
┌─int_id─┬─int_nullable─┬─float─┬─float_nullable─┐
│      1 │            0 │     2 │              0 │
└────────┴──────────────┴───────┴────────────────┘

관련 문서

마지막 수정일 2026년 6월 10일