ClickHouse/docs/ja/engines/database-engines/mysql.md
2024-11-18 11:58:58 +09:00

4.8 KiB

slug sidebar_position sidebar_label
/ja/engines/database-engines/mysql 50 MySQL

import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge';

MySQL データベースエンジン

リモートの MySQL サーバー上のデータベースに接続し、INSERT および SELECT クエリを実行して ClickHouse と MySQL 間でデータを交換することができます。

MySQL データベースエンジンはクエリを MySQL サーバーに翻訳するため、SHOW TABLESSHOW CREATE TABLE のような操作を実行することができます。

以下のクエリは実行できません:

  • RENAME
  • CREATE TABLE
  • ALTER

データベースの作成

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')

エンジンパラメータ

  • host:port — MySQL サーバーアドレス。
  • database — リモートデータベース名。
  • user — MySQL ユーザー。
  • password — ユーザーパスワード。

データ型サポート

MySQL ClickHouse
UNSIGNED TINYINT UInt8
TINYINT Int8
UNSIGNED SMALLINT UInt16
SMALLINT Int16
UNSIGNED INT, UNSIGNED MEDIUMINT UInt32
INT, MEDIUMINT Int32
UNSIGNED BIGINT UInt64
BIGINT Int64
FLOAT Float32
DOUBLE Float64
DATE Date
DATETIME, TIMESTAMP DateTime
BINARY FixedString

その他のすべての MySQL データ型は String に変換されます。

Nullable がサポートされています。

グローバル変数サポート

より高い互換性のために、MySQL スタイルで @@identifier としてグローバル変数を使用できます。

これらの変数がサポートされています:

  • version
  • max_allowed_packet

:::note 現時点では、これらの変数はスタブであり、何かに対応しているわけではありません。 :::

例:

SELECT @@version;

使用例

MySQL のテーブル:

mysql> USE test;
Database changed

mysql> CREATE TABLE `mysql_table` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `float` FLOAT NOT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

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

mysql> select * from mysql_table;
+------+-----+
| int_id | value |
+------+-----+
|      1 |     2 |
+------+-----+
1 row in set (0,00 sec)

MySQL サーバーとデータを交換する ClickHouse のデータベース:

CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password') SETTINGS read_write_timeout=10000, connect_timeout=100;
SHOW DATABASES
┌─name─────┐
│ default  │
│ mysql_db │
│ system   │
└──────────┘
SHOW TABLES FROM mysql_db
┌─name─────────┐
│  mysql_table │
└──────────────┘
SELECT * FROM mysql_db.mysql_table
┌─int_id─┬─value─┐
│      1 │     2 │
└────────┴───────┘
INSERT INTO mysql_db.mysql_table VALUES (3,4)
SELECT * FROM mysql_db.mysql_table
┌─int_id─┬─value─┐
│      1 │     2 │
│      3 │     4 │
└────────┴───────┘