ClickHouse/docs/tr/engines/table_engines/integrations/odbc.md
2020-04-15 16:56:49 +03:00

4.3 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true e8cd92bba3 35 ODBC

ODBC

ClickHouse üzerinden harici veritabanlarına bağlanmak için izin verir ODBC.

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.

Bu motor destekler Nullable veri türü.

Tablo oluşturma

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1],
    name2 [type2],
    ...
)
ENGINE = ODBC(connection_settings, external_database, external_table)

Ayrıntılı bir açıklamasını görmek CREATE TABLE sorgu.

Tablo yapısı kaynak tablo yapısından farklı olabilir:

  • Sütun adları kaynak tablodaki ile aynı olmalıdır, ancak yalnızca bu sütunlardan bazılarını ve herhangi bir sırada kullanabilirsiniz.
  • Sütun türleri kaynak tablodakilerden farklı olabilir. ClickHouse çalışır döküm ClickHouse veri türleri için değerler.

Motor Parametreleri

  • connection_settings — Name of the section with connection settings in the odbc.ini Dosya.
  • external_database — Name of a database in an external DBMS.
  • external_table — Name of a table in the external_database.

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 tablo, MySQL tablosundan veri alma:

CREATE TABLE odbc_t
(
    `int_id` Int32,
    `float_nullable` Nullable(Float32)
)
ENGINE = ODBC('DSN=mysqlconn', 'test', 'test')
SELECT * FROM odbc_t
┌─int_id─┬─float_nullable─┐
│      1 │           ᴺᵁᴸᴸ │
└────────┴────────────────┘

Ayrıca Bakınız

Orijinal makale