Asocia una tabla o un diccionario, por ejemplo, al mover una base de datos a otro servidor.
Sintaxis
ATTACH TABLE|DICTIONARY|DATABASE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster] ...
La consulta no crea datos en disco, sino que asume que los datos ya se encuentran en los lugares adecuados y simplemente añade al servidor información sobre la tabla, el diccionario o la base de datos especificados. Después de ejecutar la consulta ATTACH, el servidor sabrá que existen la tabla, el diccionario o la base de datos.
Si una tabla se desvinculó previamente (consulta DETACH), es decir, si se conoce su estructura, puede usar la forma abreviada sin definirla.
Adjuntar una tabla existente
Sintaxis
ATTACH TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]
Esta consulta se utiliza al iniciar el servidor. El servidor almacena los metadatos de las tablas como archivos con consultas ATTACH, que simplemente ejecuta al arrancar (con la excepción de algunas tablas del sistema, que se crean explícitamente en el servidor).
Si la tabla se desvinculó de forma permanente, no volverá a adjuntarse al iniciar el servidor, por lo que debe usar la consulta ATTACH explícitamente.
Crear una nueva tabla y adjuntar los datos
Con una ruta especificada para los datos de la tabla
La consulta crea una tabla nueva con la estructura indicada y adjunta los datos de la tabla desde el directorio especificado en user_files.
Sintaxis
ATTACH TABLE name FROM 'path/to/data/' (col1 Type1, ...)
Ejemplo
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 │
└──────┴────┘
Con un UUID de tabla especificado
Esta consulta crea una tabla nueva con la estructura proporcionada y adjunta los datos de la tabla con el UUID especificado.
Es compatible con el motor de base de datos Atomic.
Sintaxis
ATTACH TABLE name UUID '<uuid>' (col1 Type1, ...)
Adjuntar una tabla MergeTree como ReplicatedMergeTree
Permite adjuntar una tabla MergeTree no replicada como ReplicatedMergeTree. La tabla ReplicatedMergeTree se creará con los valores de los ajustes default_replica_path y default_replica_name. También es posible adjuntar una tabla replicada como una tabla MergeTree normal.
Tenga en cuenta que los datos de la tabla en ZooKeeper no se ven afectados por esta consulta. Esto significa que debe agregar metadatos en ZooKeeper con SYSTEM RESTORE REPLICA o eliminarlos con SYSTEM DROP REPLICA ... FROM ZKPATH ... después de adjuntarla.
Si está intentando agregar una réplica a una tabla ReplicatedMergeTree existente, tenga en cuenta que todos los datos locales de la tabla MergeTree convertida quedarán desvinculados.
Sintaxis
ATTACH TABLE [db.]name AS [NOT] REPLICATED
Convertir una tabla en una tabla replicada
DETACH TABLE test;
ATTACH TABLE test AS REPLICATED;
SYSTEM RESTORE REPLICA test;
Convertir una tabla para que deje de estar replicada
Obtenga la ruta de ZooKeeper y el nombre de la réplica de la tabla:
SELECT replica_name, zookeeper_path FROM system.replicas WHERE table='test';
┌─replica_name─┬─zookeeper_path─────────────────────────────────────────────┐
│ r1 │ /clickhouse/tables/401e6a1f-9bf2-41a3-a900-abb7e94dff98/s1 │
└──────────────┴────────────────────────────────────────────────────────────┘
Adjunte la tabla como no replicada y elimine de ZooKeeper los datos de la réplica:
DETACH TABLE test;
ATTACH TABLE test AS NOT REPLICATED;
SYSTEM DROP REPLICA 'r1' FROM ZKPATH '/clickhouse/tables/401e6a1f-9bf2-41a3-a900-abb7e94dff98/s1';
Adjuntar un diccionario existente
Adjunta un diccionario previamente desvinculado.
Sintaxis
ATTACH DICTIONARY [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]
Adjuntar una base de datos existente
Adjunta una base de datos que se había desvinculado previamente.
Sintaxis
ATTACH DATABASE [IF NOT EXISTS] name [ENGINE=<database engine>] [ON CLUSTER cluster]
Última modificación el 10 de junio de 2026