跳到主要内容
跳到主要内容

ATTACH 语句

将表或字典附加到另一个服务器时,例如在移动数据库时。

语法

该查询不会在磁盘上创建数据,而是假设数据已经在适当的位置,只是将关于指定表、字典或数据库的信息添加到服务器。执行 ATTACH 查询后,服务器将知道表、字典或数据库的存在。

如果一个表之前被分离(即 DETACH 查询),意味着它的结构已知,可以使用简写而无需定义结构。

附加现有表

语法

该查询在服务器启动时使用。服务器将表元数据作为 ATTACH 查询的文件存储,这些查询在启动时会简单地运行(某些系统表除外,这些表会在服务器上显式创建)。

如果表被永久分离,则在服务器启动时不会重新附加,因此需要显式使用 ATTACH 查询。

创建新表并附加数据

指定表数据路径

该查询使用提供的结构创建一个新表,并从 user_files 中提供的目录附加表数据。

语法

示例

查询:

结果:

指定表 UUID

该查询使用提供的结构创建一个新表,并从具有指定 UUID 的表附加数据。 它由 Atomic 数据库引擎支持。

语法

将 MergeTree 表附加为 ReplicatedMergeTree

允许将非复制的 MergeTree 表附加为 ReplicatedMergeTree。ReplicatedMergeTree 表将使用 default_replica_pathdefault_replica_name 设置的值创建。也可以将复制表附加为常规的 MergeTree。

请注意,此查询不会影响 ZooKeeper 中表的数据。这意味着您必须使用 SYSTEM RESTORE REPLICA 在 ZooKeeper 中添加元数据,或者在附加后使用 SYSTEM DROP REPLICA ... FROM ZKPATH ... 清除它。

如果您试图向现有的 ReplicatedMergeTree 表添加副本,请记住,转换后的 MergeTree 表中的所有本地数据将被分离。

语法

将表转换为复制的

将表转换为非复制的

获取表的 ZooKeeper 路径和副本名称:

结果:

将表作为非复制附加,并从 ZooKeeper 中删除副本的数据:

附加现有字典

附加之前分离的字典。

语法

附加现有数据库

附加之前分离的数据库。

语法