Оператор ATTACH
Подключает таблицу или словарь, например, при переносе базы данных на другой сервер.
Синтаксис
Запрос не создаёт данные на диске, а предполагает, что данные уже размещены в соответствующих местах, и просто добавляет на сервер информацию об указанной таблице, словаре или базе данных. После выполнения запроса ATTACH сервер будет знать о существовании таблицы, словаря или базы данных.
Если таблица ранее была отсоединена (запрос DETACH), то есть её структура уже известна, можно использовать сокращённую форму без определения структуры.
Подключить существующую таблицу
Синтаксис
Этот запрос используется при запуске сервера. Сервер хранит метаданные таблиц в виде файлов с запросами ATTACH, которые он просто выполняет при старте (за исключением некоторых системных таблиц, которые создаются на сервере явно).
Если таблица была отсоединена окончательно, она не будет повторно присоединена при запуске сервера, поэтому вам нужно явно выполнить запрос ATTACH.
Создание новой таблицы и подключение данных
С указанием пути к данным таблицы
Запрос создает новую таблицу с заданной структурой и подключает данные таблицы из указанного каталога в директории user_files.
Синтаксис
Пример
Запрос:
Результат:
С заданным UUID таблицы
Этот запрос создает новую таблицу с заданной структурой и присоединяет данные из таблицы с указанным UUID. Поддерживается в движке базы данных Atomic.
Синтаксис
Подключение таблицы MergeTree как ReplicatedMergeTree
Позволяет подключить нереплицируемую таблицу MergeTree как ReplicatedMergeTree. Таблица ReplicatedMergeTree будет создана с использованием значений настроек default_replica_path и default_replica_name. Также возможно подключить реплицируемую таблицу как обычную MergeTree.
Обратите внимание, что данные таблицы в ZooKeeper этим запросом не изменяются. Это означает, что вам необходимо либо добавить метаданные в ZooKeeper с помощью SYSTEM RESTORE REPLICA, либо очистить их с помощью SYSTEM DROP REPLICA ... FROM ZKPATH ... после выполнения операции ATTACH.
Если вы пытаетесь добавить реплику к уже существующей таблице ReplicatedMergeTree, имейте в виду, что все локальные данные в преобразованной таблице MergeTree будут отсоединены.
Синтаксис
Преобразование таблицы в реплицируемую таблицу
Преобразовать таблицу в нереплицируемую
Определите путь в ZooKeeper и имя реплики таблицы:
Результат:
Подключите таблицу как нереплицируемую и удалите данные этой реплики из ZooKeeper:
Подключить существующий словарь
Подключает ранее отключённый словарь.
Синтаксис
Подключить существующую базу данных
Подключает ранее отсоединённую базу данных.
Синтаксис