メインコンテンツまでスキップ
メインコンテンツまでスキップ

ClickHouseにおけるSQLデータの挿入とダンプ

ClickHouseは、OLTPデータベースインフラストラクチャに容易に統合できます。その一つの方法は、SQLダンプを使用して他のデータベースとClickHouseの間でデータを転送することです。

SQLダンプの作成

データは、SQLInsertを使用してSQL形式でダンプできます。ClickHouseは、INSERT INTO <テーブル名> VALUES(... 形式でデータを書き込み、output_format_sql_insert_table_name設定オプションをテーブル名として使用します。

カラム名は、output_format_sql_insert_include_column_namesオプションを無効にすることで省略できます。

これで、dump.sqlファイルを別のOLTPデータベースに供給できます。

ここでは、some_db MySQLデータベースにsome_tableテーブルが存在すると仮定しています。

一部のDBMSには、一度のバッチで処理できる値の数に制限がある場合があります。デフォルトでは、ClickHouseは65kの値のバッチを作成しますが、これはoutput_format_sql_insert_max_batch_sizeオプションで変更できます。

値のセットのエクスポート

ClickHouseにはValues形式があり、これはSQLInsertに似ていますが、INSERT INTO table VALUESの部分を省略し、値のセットのみを返します。

SQLダンプからのデータの挿入

SQLダンプを読み取るためには、MySQLDumpを使用します。

デフォルトでは、ClickHouseは未知のカラムをスキップし(input_format_skip_unknown_fieldsオプションで制御)、ダンプ内の最初に見つかったテーブル用にデータを処理します(複数のテーブルが1つのファイルにダンプされた場合)。DDL文はスキップされます。MySQLダンプからテーブルへのデータをロードするためには、以下のようにします(mysql.sqlファイル):

また、MySQLダンプファイルから自動的にテーブルを作成することもできます。

ここでは、ClickHouseが自動的に推測した構造に基づいてtable_from_mysqlという名前のテーブルを作成しました。ClickHouseはデータに基づいて型を検出するか、利用可能な場合はDDLを使用します。

その他の形式

ClickHouseは、さまざまなシナリオやプラットフォームをカバーするために、多くのフォーマット(テキストおよびバイナリ)のサポートを導入しています。以下の記事で、さまざまなフォーマットとそれらを扱う方法を探ってみてください。

さらに、clickhouse-localをチェックしてください - ClickHouseサーバーなしでローカル/リモートファイルで作業するためのポータブルなフル機能ツールです。