6.1 KiB
sidebar_label | slug |
---|---|
SQL ダンプ | /ja/integrations/data-formats/sql |
ClickHouseでのSQLデータの挿入とダンプ
ClickHouseは、さまざまな方法でOLTPデータベースインフラストラクチャに簡単に統合することができます。その一つの方法は、他のデータベースとClickHouse間でSQLダンプを利用してデータを転送することです。
SQLダンプの作成
データはSQLInsertを使用してSQL形式でダンプできます。ClickHouseはデータをINSERT INTO <table name> VALUES(...)
の形式で書き込み、output_format_sql_insert_table_name
設定オプションをテーブル名として使用します。
SET output_format_sql_insert_table_name = 'some_table';
SELECT * FROM some_data
INTO OUTFILE 'dump.sql'
FORMAT SQLInsert
カラム名はoutput_format_sql_insert_include_column_names
オプションを無効にすることで省略できます。
SET output_format_sql_insert_include_column_names = 0
今度はdump.sqlファイルを他のOLTPデータベースに供給できます。
mysql some_db < dump.sql
ここでは、some_db
MySQLデータベースにsome_table
テーブルが存在すると仮定しています。
一部のDBMSは、1回のバッチで処理できる値の量に制限がある場合があります。デフォルトではClickHouseは65kの値のバッチを作成しますが、output_format_sql_insert_max_batch_size
オプションでこれを変更できます。
SET output_format_sql_insert_max_batch_size = 1000;
一連の値のエクスポート
ClickHouseには、INSERT INTO table VALUES
部分を省略し、一連の値のみを返すValues形式があります。
SELECT * FROM some_data LIMIT 3 FORMAT Values
('Bangor_City_Forest','2015-07-01',34),('Alireza_Afzal','2017-02-01',24),('Akhaura-Laksam-Chittagong_Line','2015-09-01',30)
SQLダンプからのデータの挿入
SQLダンプを読み取るためには、MySQLDumpを使用します。
SELECT *
FROM file('dump.sql', MySQLDump)
LIMIT 5
┌─path───────────────────────────┬──────month─┬─hits─┐
│ Bangor_City_Forest │ 2015-07-01 │ 34 │
│ Alireza_Afzal │ 2017-02-01 │ 24 │
│ Akhaura-Laksam-Chittagong_Line │ 2015-09-01 │ 30 │
│ 1973_National_500 │ 2017-10-01 │ 80 │
│ Attachment │ 2017-09-01 │ 1356 │
└────────────────────────────────┴────────────┴──────┘
デフォルトでClickHouseは未知のカラムをスキップします(これはinput_format_skip_unknown_fieldsオプションによって制御されます)し、ダンプに複数のテーブルが含まれる場合、最初に見つかったテーブルのデータを処理します。DDL文はスキップされます。MySQLダンプからテーブルにデータを読み込むためには(例: mysql.sql ファイル)以下のようにします。
INSERT INTO some_data
FROM INFILE 'mysql.sql' FORMAT MySQLDump
また、MySQLダンプファイルから自動的にテーブルを作成することもできます。
CREATE TABLE table_from_mysql
ENGINE = MergeTree
ORDER BY tuple() AS
SELECT *
FROM file('mysql.sql', MySQLDump)
ここでは、ClickHouseが自動的に推測した構造に基づいてtable_from_mysql
という名前のテーブルを作成しました。ClickHouseはデータに基づいてタイプを検出するか、利用可能な場合はDDLを使用します。
DESCRIBE TABLE table_from_mysql;
┌─name──┬─type─────────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ path │ Nullable(String) │ │ │ │ │ │
│ month │ Nullable(Date32) │ │ │ │ │ │
│ hits │ Nullable(UInt32) │ │ │ │ │ │
└───────┴──────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
その他のフォーマット
ClickHouseは、さまざまなシナリオやプラットフォームに対応するために、多くのフォーマットをテキストとバイナリの両方でサポートしています。以下の記事でさらに多くのフォーマットやその扱い方について学んでください。
また、clickhouse-localも確認してください。これは、ClickHouseサーバーを使わずにローカル/リモートファイル上でSQLで作業するためのポータブルなフル機能のツールです。