ATTACH ステートメント
テーブルまたは辞書を添付します。たとえば、データベースを別のサーバーに移動する際に使用します。
構文
このクエリはディスク上にデータを作成するのではなく、データがすでに適切な場所にあることを前提として、指定されたテーブル、辞書、またはデータベースに関する情報をサーバーに追加します。 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 からレプリカのデータを削除します:
既存の辞書を添付
以前にデタッチされた辞書を添付します。
構文
既存のデータベースを添付
以前にデタッチされたデータベースを添付します。
構文