Devuelve la tabla conectada mediante ODBC.
odbc(datasource, external_database, external_table)
odbc(datasource, external_table)
odbc(named_collection)
| Argumento | Descripción |
|---|
datasource | Nombre de la sección con la configuración de la conexión en el archivo odbc.ini. |
external_database | Nombre de una base de datos en un sistema de gestión de bases de datos externo. |
external_table | Nombre de una tabla en external_database. |
Estos parámetros también pueden pasarse mediante colecciones nombradas.
Para implementar conexiones ODBC de forma segura, ClickHouse utiliza un programa independiente, clickhouse-odbc-bridge. Si el controlador ODBC se carga directamente desde clickhouse-server, los problemas con el controlador pueden hacer que falle el servidor ClickHouse. ClickHouse inicia automáticamente clickhouse-odbc-bridge cuando es necesario. El programa clickhouse-odbc-bridge se instala desde el mismo paquete que clickhouse-server.
Los campos con valores NULL de la tabla externa se convierten en los valores predeterminados del tipo de dato base. Por ejemplo, si un campo de una tabla MySQL remota tiene el tipo INT NULL, se convierte en 0 (el valor predeterminado del tipo de dato Int32 de ClickHouse).
Obtención de datos de una instalación local de MySQL mediante ODBC
Este ejemplo se ha verificado en Ubuntu Linux 18.04 y MySQL server 5.7.
Asegúrese de que unixODBC y MySQL Connector estén instalados.
De forma predeterminada (si se instaló a partir de paquetes), ClickHouse se inicia con el usuario clickhouse. Por lo tanto, debe crear y configurar este usuario en el servidor MySQL.
mysql> CREATE USER 'clickhouse'@'localhost' IDENTIFIED BY 'clickhouse';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'clickhouse'@'clickhouse' WITH GRANT OPTION;
Luego, configura la conexión en /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
Puede comprobar la conexión con la utilidad isql de la instalación de unixODBC.
$ isql -v mysqlconn
+-------------------------+
| Connected! |
| |
...
Tabla en 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)
Obtención de datos de la tabla MySQL en ClickHouse:
SELECT * FROM odbc('DSN=mysqlconn', 'test', 'test')
┌─int_id─┬─int_nullable─┬─float─┬─float_nullable─┐
│ 1 │ 0 │ 2 │ 0 │
└────────┴──────────────┴───────┴────────────────┘
Última modificación el 10 de junio de 2026