3.7 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | e8cd92bba3 |
44 | odbc |
odbc
Üzerinden bağlanan tabloyu döndürür ODBC.
odbc(connection_settings, external_database, external_table)
Parametre:
connection_settings
— Name of the section with connection settings in theodbc.ini
Dosya.external_database
— Name of a database in an external DBMS.external_table
— Name of a table in theexternal_database
.
ODBC bağlantılarını güvenli bir şekilde uygulamak için ClickHouse ayrı bir program kullanır clickhouse-odbc-bridge
. ODBC sürücüsü doğrudan yüklenmişse clickhouse-server
, sürücü sorunları ClickHouse sunucu çökmesine neden olabilir. ClickHouse otomatik olarak başlar clickhouse-odbc-bridge
gerekli olduğunda. ODBC Köprüsü programı aynı paketten yüklenir clickhouse-server
.
Alanları ile NULL
dış tablodaki değerler, temel veri türü için varsayılan değerlere dönüştürülür. Örneğin, uzak bir MySQL tablo alanı INT NULL
yazın 0'a dönüştürülür (ClickHouse için varsayılan değer Int32
veri türü).
Kullanım örneği
ODBC üzerinden yerel MySQL kurulumundan veri alma
Bu örnek Ubuntu Linux 18.04 ve MySQL server 5.7 için kontrol edilir.
UnixODBC ve MySQL Connector yüklü olduğundan emin olun.
Varsayılan olarak (paketlerden yüklüyse), ClickHouse kullanıcı olarak başlar clickhouse
. Bu nedenle, bu kullanıcıyı MySQL sunucusunda oluşturmanız ve yapılandırmanız gerekir.
$ sudo mysql
mysql> CREATE USER 'clickhouse'@'localhost' IDENTIFIED BY 'clickhouse';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'clickhouse'@'clickhouse' WITH GRANT OPTION;
Sonra bağlantıyı yapılandırın /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
Kullanarak bağlantıyı kontrol edebilirsiniz isql
unixodbc yüklemesinden yardımcı program.
$ isql -v mysqlconn
+-------------------------+
| Connected! |
| |
...
MySQL tablo:
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'daki MySQL tablosundan veri alma:
SELECT * FROM odbc('DSN=mysqlconn', 'test', 'test')
┌─int_id─┬─int_nullable─┬─float─┬─float_nullable─┐
│ 1 │ 0 │ 2 │ 0 │
└────────┴──────────────┴───────┴────────────────┘