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