ATTACH ステートメント
テーブルまたは辞書を ATTACH します。たとえば、データベースを別のサーバーに移行する際などに使用します。
構文
このクエリはディスク上にデータを作成せず、データがすでに適切な場所にあることを前提として、指定されたテーブル、ディクショナリ、またはデータベースに関する情報だけをサーバーに追加します。ATTACH クエリを実行した後は、サーバーはそのテーブル、ディクショナリ、またはデータベースの存在を把握します。
テーブルが以前に (DETACH クエリによって) デタッチされており、その構造が既知である場合は、構造を定義せずに省略形の記法を使用できます。
既存のテーブルをアタッチ
構文
このクエリはサーバーの起動時に使用されます。サーバーはテーブルのメタデータを ATTACH クエリの形でファイルに保存し、起動時にそれらをそのまま実行します(一部のシステムテーブルを除き、それらはサーバー上で明示的に作成されます)。
テーブルが恒久的に DETACH されている場合、サーバー起動時に自動的に再度 ATTACH されないため、明示的に ATTACH クエリを使用する必要があります。
新しいテーブルを作成してデータをアタッチする
テーブルデータのパスを指定する場合
このクエリは、指定された構造で新しいテーブルを作成し、user_files 内の指定されたディレクトリからテーブルデータをアタッチします。
構文
例
クエリ:
結果:
指定したテーブル UUID の使用
このクエリは、指定された構造の新しいテーブルを作成し、指定された UUID を持つテーブルからデータをアタッチします。 これは Atomic データベースエンジンでサポートされています。
構文
MergeTree テーブルを ReplicatedMergeTree としてアタッチする
レプリケーションされていない MergeTree テーブルを ReplicatedMergeTree としてアタッチできます。ReplicatedMergeTree テーブルは、default_replica_path と default_replica_name 設定の値を用いて作成されます。また、レプリケートされたテーブルを通常の MergeTree としてアタッチすることも可能です。
このクエリでは、ZooKeeper 内のテーブルのデータは影響を受けないことに注意してください。つまり、アタッチ後に SYSTEM RESTORE REPLICA を使用して ZooKeeper にメタデータを追加するか、SYSTEM DROP REPLICA ... FROM ZKPATH ... を使ってメタデータを削除する必要があります。
既存の ReplicatedMergeTree テーブルにレプリカを追加しようとしている場合、変換された MergeTree テーブル内のローカルデータはすべてデタッチされることに注意してください。
構文
テーブルをレプリケートテーブルに変換
テーブルを非レプリケートテーブルに変換する
テーブルの ZooKeeper パスとレプリカ名を取得します:
結果:
テーブルをレプリケーションなしとしてアタッチし、レプリカのデータを ZooKeeper から削除します:
既存の辞書をアタッチする
以前にデタッチした辞書を再アタッチします。
構文
既存のデータベースをアタッチ
以前にデタッチしたデータベースを再度アタッチします。
構文