mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-25 09:02:00 +00:00
3.2 KiB
3.2 KiB
slug | sidebar_position | sidebar_label | title |
---|---|---|---|
/ja/sql-reference/statements/attach | 40 | ATTACH | ATTACH ステートメント |
データベースを別のサーバーに移動する場合などに、テーブルやDictionaryをアタッチします。
構文
ATTACH TABLE|DICTIONARY|DATABASE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster] ...
クエリはディスク上にデータを作成せず、データが適切な場所に既にあると仮定して、指定したテーブル、Dictionary、またはデータベースに関する情報をサーバーに追加します。ATTACH
クエリを実行した後、サーバーはそのテーブル、Dictionary、またはデータベースの存在を認識します。
テーブルが以前に切り離されていた場合(DETACHクエリ)、その構造が既知であることを意味するので、構造を定義せずに省略形を使用できます。
既存のテーブルをアタッチ
構文
ATTACH TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]
このクエリはサーバーを開始する際に使用されます。サーバーはテーブルメタデータをATTACH
クエリとしてファイルとして保存し、起動時に単に実行します(サーバー上で明示的に作成される一部のシステムテーブルを除く)。
テーブルが永久に切り離されていた場合、サーバーの起動時には再アタッチされないため、ATTACH
クエリを明示的に使用する必要があります。
新しいテーブルを作成しデータをアタッチ
テーブルデータへの指定されたパスを使用する場合
このクエリは、提供された構造で新しいテーブルを作成し、user_files
にある指定されたディレクトリからテーブルデータをアタッチします。
構文
ATTACH TABLE name FROM 'path/to/data/' (col1 Type1, ...)
例
クエリ:
DROP TABLE IF EXISTS test;
INSERT INTO TABLE FUNCTION file('01188_attach/test/data.TSV', 'TSV', 's String, n UInt8') VALUES ('test', 42);
ATTACH TABLE test FROM '01188_attach/test' (s String, n UInt8) ENGINE = File(TSV);
SELECT * FROM test;
結果:
┌─s────┬──n─┐
│ test │ 42 │
└──────┴────┘
指定されたテーブルUUIDを使用する場合
このクエリは、提供された構造で新しいテーブルを作成し、指定されたUUIDのテーブルからデータをアタッチします。これはAtomicデータベースエンジンによってサポートされています。
構文
ATTACH TABLE name UUID '<uuid>' (col1 Type1, ...)
既存のDictionaryをアタッチ
以前に切り離されたDictionaryをアタッチします。
構文
ATTACH DICTIONARY [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]
既存のデータベースをアタッチ
以前に切り離されたデータベースをアタッチします。
構文
ATTACH DATABASE [IF NOT EXISTS] name [ENGINE=<database engine>] [ON CLUSTER cluster]