mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 07:31:57 +00:00
DOCAPI-6206: ODBC engine and table function. EN review. RU translation. (#5504)
This commit is contained in:
parent
af1129a97b
commit
54b1349fb9
@ -2,7 +2,7 @@
|
||||
|
||||
Allows ClickHouse to connect to external databases via [ODBC](https://en.wikipedia.org/wiki/Open_Database_Connectivity).
|
||||
|
||||
To implement ODBC connection safely, ClickHouse uses the separate program `clickhouse-odbc-bridge`. If the ODBC driver is loaded directly from the `clickhouse-server` program, the problems in the driver can crash the ClickHouse server. ClickHouse starts the `clickhouse-odbc-bridge` program automatically when it is required. The ODBC bridge program is installed by the same package as the `clickhouse-server`.
|
||||
To safely implement ODBC connections, ClickHouse uses a separate program `clickhouse-odbc-bridge`. If the ODBC driver is loaded directly from `clickhouse-server`, driver problems can crash the ClickHouse server. ClickHouse automatically starts `clickhouse-odbc-bridge` when it is required. The ODBC bridge program is installed from the same package as the `clickhouse-server`.
|
||||
|
||||
This engine supports the [Nullable](../../data_types/nullable.md) data type.
|
||||
|
||||
@ -18,12 +18,12 @@ CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
|
||||
ENGINE = ODBC(connection_settings, external_database, external_table)
|
||||
```
|
||||
|
||||
See the detailed description of the [CREATE TABLE](../../query_language/create.md#create-table-query) query.
|
||||
See a detailed description of the [CREATE TABLE](../../query_language/create.md#create-table-query) query.
|
||||
|
||||
The table structure can be not the same as the source table structure:
|
||||
The table structure can differ from the source table structure:
|
||||
|
||||
- Names of columns should be the same as in the source table, but you can use just some of these columns in any order.
|
||||
- Types of columns may differ from the types in the source table. ClickHouse tries to [cast](../../query_language/functions/type_conversion_functions.md#type_conversion_function-cast) values into the ClickHouse data types.
|
||||
- Column names should be the same as in the source table, but you can use just some of these columns and in any order.
|
||||
- Column types may differ from those in the source table. ClickHouse tries to [cast](../../query_language/functions/type_conversion_functions.md#type_conversion_function-cast) values to the ClickHouse data types.
|
||||
|
||||
**Engine Parameters**
|
||||
|
||||
@ -33,13 +33,13 @@ The table structure can be not the same as the source table structure:
|
||||
|
||||
## Usage Example
|
||||
|
||||
**Getting data from the local MySQL installation via ODBC**
|
||||
**Retrieving data from the local MySQL installation via ODBC**
|
||||
|
||||
This example is for linux Ubuntu 18.04 and MySQL server 5.7.
|
||||
This example is checked for Ubuntu Linux 18.04 and MySQL server 5.7.
|
||||
|
||||
Ensure that there are unixODBC and MySQL Connector are installed.
|
||||
Ensure that unixODBC and MySQL Connector are installed.
|
||||
|
||||
By default (if installed from packages) ClickHouse starts on behalf of the user `clickhouse`. Thus, you need to create and configure this user at MySQL server.
|
||||
By default (if installed from packages), ClickHouse starts as user `clickhouse`. Thus, you need to create and configure this user in the MySQL server.
|
||||
|
||||
```
|
||||
sudo mysql
|
||||
@ -60,7 +60,7 @@ USERNAME = clickhouse
|
||||
PASSWORD = clickhouse
|
||||
```
|
||||
|
||||
You can check the connection by the `isql` utility from the unixODBC installation.
|
||||
You can check the connection using the `isql` utility from the unixODBC installation.
|
||||
|
||||
```
|
||||
isql -v mysqlconn
|
||||
@ -93,7 +93,7 @@ mysql> select * from test;
|
||||
1 row in set (0,00 sec)
|
||||
```
|
||||
|
||||
Table in ClickHouse, getting data from the MySQL table:
|
||||
Table in ClickHouse, retrieving data from the MySQL table:
|
||||
|
||||
```sql
|
||||
CREATE TABLE odbc_t
|
||||
@ -115,6 +115,6 @@ SELECT * FROM odbc_t
|
||||
## See Also
|
||||
|
||||
- [ODBC external dictionaries](../../query_language/dicts/external_dicts_dict_sources.md#dicts-external_dicts_dict_sources-odbc)
|
||||
- [ODBC table function](../../query_language/table_functions/odbc.md).
|
||||
- [ODBC table function](../../query_language/table_functions/odbc.md)
|
||||
|
||||
[Original article](https://clickhouse.yandex/docs/en/operations/table_engines/jdbc/) <!--hide-->
|
||||
[Original article](https://clickhouse.yandex/docs/en/operations/table_engines/odbc/) <!--hide-->
|
||||
|
@ -12,7 +12,7 @@ Parameters:
|
||||
- `external_database` — Name of a database in an external DBMS.
|
||||
- `external_table` — Name of a table in the `external_database`.
|
||||
|
||||
To implement ODBC connection safely, ClickHouse uses the separate program `clickhouse-odbc-bridge`. If the ODBC driver is loaded directly from the `clickhouse-server` program, the problems in the driver can crash the ClickHouse server. ClickHouse starts the `clickhouse-odbc-bridge` program automatically when it is required. The ODBC bridge program is installed by the same package as the `clickhouse-server`.
|
||||
To safely implement ODBC connections, ClickHouse uses a separate program `clickhouse-odbc-bridge`. If the ODBC driver is loaded directly from `clickhouse-server`, driver problems can crash the ClickHouse server. ClickHouse automatically starts `clickhouse-odbc-bridge` when it is required. The ODBC bridge program is installed from the same package as the `clickhouse-server`.
|
||||
|
||||
The fields with the `NULL` values from the external table are converted into the default values for the base data type. For example, if a remote MySQL table field has the `INT NULL` type it is converted to 0 (the default value for ClickHouse `Int32` data type).
|
||||
|
||||
@ -20,11 +20,11 @@ The fields with the `NULL` values from the external table are converted into the
|
||||
|
||||
**Getting data from the local MySQL installation via ODBC**
|
||||
|
||||
This example is for linux Ubuntu 18.04 and MySQL server 5.7.
|
||||
This example is checked for Ubuntu Linux 18.04 and MySQL server 5.7.
|
||||
|
||||
Ensure that there are unixODBC and MySQL Connector are installed.
|
||||
Ensure that unixODBC and MySQL Connector are installed.
|
||||
|
||||
By default (if installed from packages) ClickHouse starts on behalf of the user `clickhouse`. Thus you need to create and configure this user at MySQL server.
|
||||
By default (if installed from packages), ClickHouse starts as user `clickhouse`. Thus you need to create and configure this user in the MySQL server.
|
||||
|
||||
```
|
||||
sudo mysql
|
||||
@ -45,7 +45,7 @@ USERNAME = clickhouse
|
||||
PASSWORD = clickhouse
|
||||
```
|
||||
|
||||
You can check the connection by the `isql` utility from the unixODBC installation.
|
||||
You can check the connection using the `isql` utility from the unixODBC installation.
|
||||
|
||||
```
|
||||
isql -v mysqlconn
|
||||
@ -78,7 +78,7 @@ mysql> select * from test;
|
||||
1 row in set (0,00 sec)
|
||||
```
|
||||
|
||||
Getting data from the MySQL table:
|
||||
Retrieving data from the MySQL table in ClickHouse:
|
||||
|
||||
```sql
|
||||
SELECT * FROM odbc('DSN=mysqlconn', 'test', 'test')
|
||||
|
@ -1,29 +1,122 @@
|
||||
# ODBC
|
||||
# ODBC {#table_engine-odbc}
|
||||
|
||||
Allows ClickHouse to connect to external databases via [ODBC](https://en.wikipedia.org/wiki/Open_Database_Connectivity).
|
||||
Позволяет ClickHouse подключаться к внешним базам данных с помощью [ODBC](https://en.wikipedia.org/wiki/Open_Database_Connectivity).
|
||||
|
||||
To implement ODBC connection, ClickHouse uses the separate program `clickhouse-odbc-bridge`. ClickHouse starts this program automatically when it is required. The ODBC bridge program is installed by the same package with the ClickHouse server.
|
||||
Чтобы использование ODBC было безопасным, ClickHouse использует отдельную программу `clickhouse-odbc-bridge`. Если драйвер ODBC подгружать непосредственно из `clickhouse-server`, то проблемы с драйвером могут привести к аварийной остановке сервера ClickHouse. ClickHouse автоматически запускает `clickhouse-odbc-bridge` по мере необходимости. Программа устанавливается из того же пакета, что и `clickhouse-server`.
|
||||
|
||||
This engine supports the [Nullable](../../data_types/nullable.md) data type.
|
||||
Движок поддерживает тип данных [Nullable](../../data_types/nullable.md).
|
||||
|
||||
## Creating a Table
|
||||
## Создание таблицы
|
||||
|
||||
```
|
||||
CREATE TABLE [IF NOT EXISTS] [db.]table_name ENGINE = ODBC(connection_settings, external_database, external_table)
|
||||
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
|
||||
(
|
||||
name1 [type1],
|
||||
name2 [type2],
|
||||
...
|
||||
)
|
||||
ENGINE = ODBC(connection_settings, external_database, external_table)
|
||||
```
|
||||
|
||||
**Engine Parameters**
|
||||
Смотрите подробное описание запроса [CREATE TABLE](../../query_language/create.md#create-table-query).
|
||||
|
||||
- `connection_settings` — Name of the section with connection settings in the `odbc.ini` file.
|
||||
- `external_database` — Database in an external DBMS.
|
||||
- `external_table` — A name of the table in `external_database`.
|
||||
Структура таблицы может отличаться от структуры исходной таблицы в удалённой СУБД:
|
||||
|
||||
## Usage Example
|
||||
- Имена столбцов должны быть такими же, как в исходной таблице, но вы можете использовать только некоторые из этих столбцов и в любом порядке.
|
||||
- Типы столбцов могут отличаться от типов аналогичных столбцов в исходной таблице. ClickHouse пытается [приводить](../../query_language/functions/type_conversion_functions.md#type_conversion_function-cast) значения к типам данных ClickHouse.
|
||||
|
||||
Some examples of how to use external dictionaries through ODBC you can find in the [ODBC](../../query_language/dicts/external_dicts_dict_sources.md#dicts-external_dicts_dict_sources-odbc) section of external dictionaries configuration.
|
||||
**Параметры движка**
|
||||
|
||||
## See Also
|
||||
- `connection_settings` — название секции с настройками соединения в файле `odbc.ini`.
|
||||
- `external_database` — имя базы данных во внешней СУБД.
|
||||
- `external_table` — имя таблицы в `external_database`.
|
||||
|
||||
- [ODBC table function](../../query_language/table_functions/odbc.md).
|
||||
## Пример использования
|
||||
|
||||
[Original article](https://clickhouse.yandex/docs/en/operations/table_engines/jdbc/) <!--hide-->
|
||||
**Извлечение данных из локальной установки MySQL через ODBC**
|
||||
|
||||
Этот пример проверялся в Ubuntu Linux 18.04 для MySQL server 5.7.
|
||||
|
||||
Убедитесь, что unixODBC и MySQL Connector установлены.
|
||||
|
||||
По умолчанию (если установлен из пакетов) ClickHouse запускается от имени пользователя `clickhouse`. Таким образом, вам нужно создать и настроить этого пользователя на сервере MySQL.
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
Вы можете проверить соединение с помощью утилиты `isql` из установки unixODBC.
|
||||
|
||||
```
|
||||
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:
|
||||
|
||||
```sql
|
||||
CREATE TABLE odbc_t
|
||||
(
|
||||
`int_id` Int32,
|
||||
`float_nullable` Nullable(Float32)
|
||||
)
|
||||
ENGINE = ODBC('DSN=mysqlconn', 'test', 'test')
|
||||
```
|
||||
|
||||
```sql
|
||||
SELECT * FROM odbc_t
|
||||
```
|
||||
|
||||
```text
|
||||
┌─int_id─┬─float_nullable─┐
|
||||
│ 1 │ ᴺᵁᴸᴸ │
|
||||
└────────┴────────────────┘
|
||||
```
|
||||
|
||||
## Смотрите также
|
||||
|
||||
- [Внешние словари ODBC](../../query_language/dicts/external_dicts_dict_sources.md#dicts-external_dicts_dict_sources-odbc)
|
||||
- [Табличная функция odbc](../../query_language/table_functions/odbc.md)
|
||||
|
||||
[Оригинальная статья](https://clickhouse.yandex/docs/ru/operations/table_engines/odbc/) <!--hide-->
|
||||
|
@ -1,27 +1,98 @@
|
||||
# odbc
|
||||
# odbc {#table_functions-odbc}
|
||||
|
||||
Returns table that is connected via ODBC driver.
|
||||
Возвращает таблицу, подключенную через [ODBC](https://en.wikipedia.org/wiki/Open_Database_Connectivity).
|
||||
|
||||
```
|
||||
odbc(connection_settings, external_database, external_table)
|
||||
```
|
||||
|
||||
**Function Parameters**
|
||||
Параметры:
|
||||
|
||||
- `connection_settings` — Name of the section with connection settings in the `odbc.ini` file.
|
||||
- `external_database` — Database in an external DBMS.
|
||||
- `external_table` — A name of the table in `external_database`.
|
||||
- `connection_settings` — название секции с настройками соединения в файле `odbc.ini`.
|
||||
- `external_database` — имя базы данных во внешней СУБД.
|
||||
- `external_table` — имя таблицы в `external_database`.
|
||||
|
||||
To implement ODBC connection, ClickHouse uses the separate program `clickhouse-odbc-bridge`. ClickHouse starts this program automatically when it is required. The ODBC bridge program is installed by the same package with the ClickHouse server.
|
||||
Чтобы использование ODBC было безопасным, ClickHouse использует отдельную программу `clickhouse-odbc-bridge`. Если драйвер ODBC подгружать непосредственно из `clickhouse-server`, то проблемы с драйвером могут привести к аварийной остановке сервера ClickHouse. ClickHouse автоматически запускает `clickhouse-odbc-bridge` по мере необходимости. Программа устанавливается из того же пакета, что и `clickhouse-server`.
|
||||
|
||||
This function supports the [Nullable](../../data_types/nullable.md) data type (based on DDL of remote table that is queried).
|
||||
Поля из внешней таблицы со значениями `NULL` получают значение по умолчанию для базового типа данных. Например, если поле в удалённой таблице MySQL имеет тип `INT NULL` оно сконвертируется в 0 (значение по умолчанию для типа данных ClickHouse `Int32`).
|
||||
|
||||
**Examples**
|
||||
## Пример использования
|
||||
|
||||
**Получение данных из локальной установки MySQL через ODBC**
|
||||
|
||||
Этот пример проверялся в Ubuntu Linux 18.04 для MySQL server 5.7.
|
||||
|
||||
Убедитесь, что unixODBC и MySQL Connector установлены.
|
||||
|
||||
По умолчанию (если установлен из пакетов) ClickHouse запускается от имени пользователя `clickhouse`. Таким образом, вам нужно создать и настроить этого пользователя на сервере MySQL.
|
||||
|
||||
```
|
||||
select * from odbc('DSN=connection_settings_name', 'external_database_name', 'external_table_name')
|
||||
sudo mysql
|
||||
mysql> CREATE USER 'clickhouse'@'localhost' IDENTIFIED BY 'clickhouse';
|
||||
mysql> GRANT ALL PRIVILEGES ON *.* TO 'clickhouse'@'clickhouse' WITH GRANT OPTION;
|
||||
```
|
||||
|
||||
Some examples of how to use external dictionaries through ODBC you can find in the [ODBC](../../query_language/dicts/external_dicts_dict_sources.md#dicts-external_dicts_dict_sources-odbc) section of external dictionaries configuration.
|
||||
Теперь настроим соединение в `/etc/odbc.ini`.
|
||||
|
||||
[Original article](https://clickhouse.yandex/docs/en/query_language/table_functions/jdbc/) <!--hide-->
|
||||
```
|
||||
$ cat /etc/odbc.ini
|
||||
[mysqlconn]
|
||||
DRIVER = /usr/local/lib/libmyodbc5w.so
|
||||
SERVER = 127.0.0.1
|
||||
PORT = 3306
|
||||
DATABASE = test
|
||||
USERNAME = clickhouse
|
||||
PASSWORD = clickhouse
|
||||
```
|
||||
|
||||
Вы можете проверить соединение с помощью утилиты `isql` из установки unixODBC.
|
||||
|
||||
```
|
||||
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)
|
||||
```
|
||||
|
||||
Получение данных из таблицы MySQL в ClickHouse:
|
||||
|
||||
```sql
|
||||
SELECT * FROM odbc('DSN=mysqlconn', 'test', 'test')
|
||||
```
|
||||
|
||||
```text
|
||||
┌─int_id─┬─int_nullable─┬─float─┬─float_nullable─┐
|
||||
│ 1 │ 0 │ 2 │ 0 │
|
||||
└────────┴──────────────┴───────┴────────────────┘
|
||||
```
|
||||
|
||||
## Смотрите также
|
||||
|
||||
- [Внешние словари ODBC](../../query_language/dicts/external_dicts_dict_sources.md#dicts-external_dicts_dict_sources-odbc)
|
||||
- [Движок таблиц ODBC](../../operations/table_engines/odbc.md).
|
||||
|
||||
[Оригинальная статья](https://clickhouse.yandex/docs/ru/query_language/table_functions/jdbc/) <!--hide-->
|
||||
|
Loading…
Reference in New Issue
Block a user