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