SELECT クエリや INSERT クエリを実行できます。
テーブルを作成する
- カラム名は元の MySQL テーブルと同じである必要がありますが、それらの一部のカラムだけを任意の順序で使用できます。
- カラムの型は、元の MySQL テーブルのものと異なっていてもかまいません。ClickHouse は値を ClickHouse のデータ型に cast しようとします。
- external_table_functions_use_nulls 設定は、Nullable カラムをどのように処理するかを定義します。デフォルト値: 1。0 の場合、このテーブル関数は Nullable カラムを作成せず、null の代わりにデフォルト値を挿入します。これは配列内の NULL 値にも適用されます。
host:port— MySQL サーバーのアドレス。database— リモートのデータベース名。table— リモートテーブル名、またはそのまま MySQL に渡されるクエリです (テーブル名の代わりにクエリを渡す を参照) 。user— MySQL ユーザー。password— ユーザーのパスワード。replace_query—INSERT INTOクエリをREPLACE INTOに変換するフラグです。replace_query=1の場合、クエリが置き換えられます。on_duplicate_clause—INSERTクエリに追加されるON DUPLICATE KEY on_duplicate_clause式です。 例:INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1。この場合、on_duplicate_clauseはUPDATE c2 = c2 + 1です。ON DUPLICATE KEY句で使用できるon_duplicate_clauseについては、MySQL documentation を参照してください。on_duplicate_clauseを指定するには、replace_queryパラメータに0を渡す必要があります。replace_query = 1とon_duplicate_clauseを同時に渡すと、ClickHouse は例外を生成します。
host と port は別々に指定する必要があります。この方法は本番環境に推奨されます。
=, !=, >, >=, <, <= のような単純な WHERE 句は MySQL サーバー上で実行されます。
それ以外の条件と LIMIT サンプリング制約は、MySQL へのクエリが完了した後にのみ ClickHouse で実行されます。
テーブル名の代わりにクエリを渡す
table 引数には MySQL にそのまま渡される SELECT クエリを指定できます。テーブルの構造はクエリの結果から推論されます。クエリは、サブクエリとして記述することも、query 関数でラップすることもできます。
INSERT することはできません。同じ構文は mysql テーブル関数でもサポートされています。
サブクエリ形式
(SELECT ...) は ClickHouse によって解析され、サーバーに送信される前に MySQL の SQL方言 (Identifier をバッククォートで囲む形式) で再シリアライズされます。したがって、有効な ClickHouse SQL である必要があります。ClickHouse が解析しない MySQL 固有の構文を渡すには、query('...') 形式を使用してください。この場合、テキストはそのまま MySQL に送信されます。外側の WHERE、LIMIT、集計など、周囲の ClickHouse クエリの要素は、渡されたクエリにはプッシュダウンされません。これらは完全なクエリ結果を取得した後に ClickHouse で適用されます。MySQL から読み取るデータを制限するには、フィルタを渡すクエリ内に記述してください。external_table_strict_query = 1 を指定すると、プッシュダウンできない外側のフィルタはローカルで適用される代わりに、例外として拒否されます。| で列挙する必要がある複数のレプリカをサポートしています。例:
使用例
設定
connection_auto_close
- 1 — 接続の自動クローズが許可され、接続の再利用は無効になります
- 0 — 接続の自動クローズは許可されず、接続の再利用は有効になります
1。
connection_max_tries
- 正の整数。
- 0 — フェイルオーバー対応のプールでは再試行しません。
3。
connection_pool_size
- 正の整数。
16。
connection_wait_timeout
connection_pool_size 個の接続がアクティブな場合) 。0 の場合は待機しません。
設定可能な値:
- 正の整数。
5。
connect_timeout
- 正の整数。
10。
read_write_timeout
- 正の整数。
300。
enable_compression
false。
この設定は次に適用されます:
MySQLテーブルエンジン;MySQLデータベースエンジン;mysqlテーブル関数;- MySQLインテグレーションで使用される 名前付きコレクション。