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 からレプリカのデータを削除:
既存の辞書をアタッチ
以前にデタッチされた辞書をアタッチします。
構文
既存のデータベースをアタッチ
以前にデタッチされたデータベースをアタッチします。
構文