> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentação da instrução ATTACH

# ATTACH

Anexa uma tabela ou um Dicionário, por exemplo, ao mover um banco de dados para outro servidor.

**Sintaxe**

```sql theme={null}
ATTACH TABLE|DICTIONARY|DATABASE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster] ...
```

A consulta não cria dados em disco, mas parte do pressuposto de que os dados já estejam nos locais apropriados e apenas adiciona ao servidor informações sobre a tabela, o dicionário ou o banco de dados especificado. Após executar a consulta `ATTACH`, o servidor passará a reconhecer a existência da tabela, do dicionário ou do banco de dados.

Se uma tabela tiver sido previamente desanexada (consulta [DETACH](/pt-BR/reference/statements/detach)), ou seja, se sua estrutura já for conhecida, você poderá usar a forma abreviada sem definir a estrutura.

## Anexar tabela existente

**Sintaxe**

```sql theme={null}
ATTACH TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]
```

Esta consulta é usada ao iniciar o servidor. O servidor armazena os metadados da tabela em arquivos com consultas `ATTACH`, que ele simplesmente executa na inicialização (com exceção de algumas tabelas de sistema, que são criadas explicitamente no servidor).

Se a tabela tiver sido desanexada permanentemente, ela não será anexada novamente quando o servidor iniciar, então você precisará usar a consulta `ATTACH` explicitamente.

## Criar nova tabela e anexar dados

### Com caminho especificado para os dados da tabela

A consulta cria uma nova tabela com a estrutura informada e anexa os dados da tabela ao diretório informado em `user_files`.
O usuário precisa dos privilégios `READ ON FILE` e `WRITE ON FILE` para esta consulta: ela lê o diretório e o move para o caminho de dados da nova tabela.

**Sintaxe**

```sql theme={null}
ATTACH TABLE name FROM 'path/to/data/' (col1 Type1, ...)
```

**Exemplo**

```sql title="Query" theme={null}
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 title="Response" theme={null}
┌─s────┬──n─┐
│ test │ 42 │
└──────┴────┘
```

### Com UUID da tabela especificado

Esta consulta cria uma nova tabela com a estrutura informada e anexa os dados da tabela com o UUID especificado.
Ela é compatível com o motor de banco de dados [Atomic](/pt-BR/reference/engines/database-engines/atomic).

**Sintaxe**

```sql theme={null}
ATTACH TABLE name UUID '<uuid>' (col1 Type1, ...)
```

## Anexar tabela MergeTree como ReplicatedMergeTree

Permite anexar uma tabela MergeTree não replicada como ReplicatedMergeTree. A tabela ReplicatedMergeTree será criada com os valores das configurações `default_replica_path` e `default_replica_name`. Também é possível anexar uma tabela replicada como uma MergeTree comum.

Observe que os dados da tabela no ZooKeeper não são afetados por esta consulta. Isso significa que você precisa adicionar metadados no ZooKeeper usando `SYSTEM RESTORE REPLICA` ou limpá-los com `SYSTEM DROP REPLICA ... FROM ZKPATH ...` após a operação de attach.

Se você estiver tentando adicionar uma réplica a uma tabela ReplicatedMergeTree existente, tenha em mente que todos os dados locais da tabela MergeTree convertida serão desanexados.

**Sintaxe**

```sql theme={null}
ATTACH TABLE [db.]name AS [NOT] REPLICATED
```

**Converter a tabela em tabela replicada**

```sql theme={null}
DETACH TABLE test;
ATTACH TABLE test AS REPLICATED;
SYSTEM RESTORE REPLICA test;
```

**Converter a tabela para não replicada**

Obtenha o caminho do ZooKeeper e o nome da réplica da tabela:

```sql title="Query" theme={null}
SELECT replica_name, zookeeper_path FROM system.replicas WHERE table='test';
```

```sql title="Response" theme={null}
┌─replica_name─┬─zookeeper_path─────────────────────────────────────────────┐
│ r1           │ /clickhouse/tables/401e6a1f-9bf2-41a3-a900-abb7e94dff98/s1 │
└──────────────┴────────────────────────────────────────────────────────────┘
```

Anexe a tabela como não replicada e exclua os dados da réplica do ZooKeeper:

```sql title="Query" theme={null}
DETACH TABLE test;
ATTACH TABLE test AS NOT REPLICATED;
SYSTEM DROP REPLICA 'r1' FROM ZKPATH '/clickhouse/tables/401e6a1f-9bf2-41a3-a900-abb7e94dff98/s1';
```

## Anexar Dicionário Existente

Anexa um dicionário anteriormente desanexado.

**Sintaxe**

```sql theme={null}
ATTACH DICTIONARY [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]
```

## Anexar banco de dados existente

Anexa um banco de dados que foi desanexado anteriormente.

**Sintaxe**

```sql theme={null}
ATTACH DATABASE [IF NOT EXISTS] name [ENGINE=<database engine>] [ON CLUSTER cluster]
```
