remote を使用すると、Distributed テーブルを作成しなくても、リモートサーバーに動的にアクセスできます。テーブル関数 remoteSecure は remote と同じですが、セキュアな接続を使用します。
どちらの関数も、SELECT クエリと INSERT クエリで使用できます。
構文
パラメータ
引数は 名前付きコレクション を使って渡すこともできます。
戻り値
使用方法
remote と remoteSecure はリクエストごとに接続を再確立するため、代わりに Distributed テーブルを使用することをお勧めします。また、ホスト名が設定されている場合は名前解決が行われ、複数のレプリカを扱う際にエラーはカウントされません。大量のクエリを処理する場合は、必ず事前に Distributed テーブルを作成し、remote テーブル関数は使用しないでください。
remote テーブル関数は、次のような場合に役立ちます。
- あるシステムから別のシステムへの一回限りのデータ移行
- データの比較、デバッグ、テストのために特定のサーバーへアクセスする場合、つまりアドホックな接続
- 調査目的で複数の ClickHouse クラスター間でクエリを実行する場合
- 手動で行う、頻度の低い分散リクエスト
- サーバーの構成を毎回定義し直す分散リクエスト
アドレス
例
リモートサーバーからデータを取得する:
リモートサーバー上のテーブルにデータを挿入する:
あるシステムから別のシステムへのテーブル移行:
imdb、テーブルは actors です。
ソース側の ClickHouse システム (現在データをホストしているシステム) で
-
ソースデータベースとテーブル名 (
imdb.actors) を確認します - ソースから CREATE TABLE 文を取得します:
宛先のClickHouseシステムで
-
宛先データベースを作成します:
-
ソースのCREATE TABLE 文を使用して、宛先テーブルを作成します:
ソース側のデプロイメントに戻る
グロブ展開
{ } 内のパターンは、分片の集合を生成したり、レプリカを指定したりするために使用されます。{ } の組が複数ある場合は、対応する集合の直積が生成されます。
サポートされているパターンの種類は次のとおりです。
{a,b,c}- 代替文字列a、b、cのいずれかを表します。このパターンは、1 つ目の分片アドレスではaに、2 つ目の分片アドレスではbに、以降も同様に置き換えられます。たとえば、example0{1,2}-1はexample01-1とexample02-1というアドレスを生成します。{N..M}- 数値の範囲です。このパターンは、NからMまで (Mを含む) 増加するインデックスを持つ分片アドレスを生成します。たとえば、example0{1..2}-1はexample01-1とexample02-1を生成します。{0n..0m}- 先頭にゼロが付いた数値の範囲です。このパターンは、インデックスの先頭のゼロを保持します。たとえば、example{01..03}-1はexample01-1、example02-1、example03-1を生成します。{a|b}-|で区切られた任意の数のバリアントです。このパターンはレプリカを指定します。たとえば、example01-{1|2}はレプリカexample01-1とexample01-2を生成します。
remote では、レプリカは現在の load_balancing 設定で指定された順序で順番に試行されます。
生成されるアドレス数は、table_function_remote_max_addresses 設定によって制限されます。