ClickHouse/docs/ru/sql-reference/statements/attach.md

60 lines
3.1 KiB
Markdown
Raw Normal View History

---
toc_priority: 40
toc_title: ATTACH
---
# ATTACH Statement {#attach}
2021-04-04 12:14:09 +00:00
Выполняет подключение таблицы, например, при перемещении базы данных на другой сервер.
2021-04-04 12:14:09 +00:00
Запрос не создаёт данные на диске, а предполагает, что данные уже лежат в соответствующих местах, и всего лишь добавляет информацию о таблице на сервер. После выполнения запроса `ATTACH` сервер будет знать о существовании таблицы.
2021-04-04 12:14:09 +00:00
Если таблица перед этим была отключена при помощи ([DETACH](../../sql-reference/statements/detach.md)), т.е. её структура известна, можно использовать сокращенную форму записи без определения структуры.
## Варианты синтаксиса {#syntax-forms}
### Присоединение существующей таблицы {#attach-existing-table}
``` sql
ATTACH TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]
```
2021-03-15 18:36:42 +00:00
Этот запрос используется при старте сервера. Сервер хранит метаданные таблиц в виде файлов с запросами `ATTACH`, которые он просто исполняет при запуске (за исключением некоторых системных таблиц, которые явно создаются на сервере).
2021-03-17 00:09:42 +00:00
Если таблица была отключена перманентно, она не будет подключена обратно во время старта сервера, так что нужно явно использовать запрос `ATTACH`, чтобы подключить ее.
2021-04-04 12:14:09 +00:00
### Создание новой таблицы и присоединение данных {#create-new-table-and-attach-data}
**С указанием пути к табличным данным**
```sql
ATTACH TABLE name FROM 'path/to/data/' (col1 Type1, ...)
```
Cоздает новую таблицу с указанной структурой и присоединяет табличные данные из соответствующего каталога в `user_files`.
**Пример**
Запрос:
```sql
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;
```
Результат:
```sql
┌─s────┬──n─┐
│ test │ 42 │
└──────┴────┘
```
**С указанием UUID таблицы** (Только для баз данных `Atomic`)
```sql
ATTACH TABLE name UUID '<uuid>' (col1 Type1, ...)
```
2021-04-04 12:14:09 +00:00
Cоздает новую таблицу с указанной структурой и присоединяет данные из таблицы с указанным UUID.