Есть ли способ ИЗМЕНИТЬ таблицу и изменить имя столбца в Clickhouse? Я обнаружил, что можно изменить только имя таблицы, но не для отдельного столбца прямым способом.
Спасибо.
Есть ли способ ИЗМЕНИТЬ таблицу и изменить имя столбца в Clickhouse? Я обнаружил, что можно изменить только имя таблицы, но не для отдельного столбца прямым способом.
Спасибо.
Эта функция была представлена здесь в версии 20.4.
ALTER TABLE table1 RENAME COLUMN old_name TO new_name
Вы также можете переименовать несколько столбцов в:
ALTER TABLE table1
RENAME COLUMN old_name1 TO new_name1,
RENAME COLUMN old_name2 TO new_name2
Старый ответ:
ClickHouse пока не имеет этой функции.
Реализация нетривиальна, потому что ALTER, изменяющие столбцы, обрабатываются вне обычной очереди репликации, а добавление переименования без переделки ALTER приведет к возникновению состояния гонки в реплицируемых таблицах.
https://github.com/yandex/ClickHouse/issues/146#issuecomment-255631384
Как сказал @Slash, решение на данный момент - создать новую таблицу и
INSERT INTO `new_table` SELECT * FROM `old_table`
Не забывайте, что псевдонимы столбцов там работать не будут (AS
).
INSERT INTO `new_table` SELECT a, b AS c, c AS b FROM `old_table`
Это все равно вставит a
в первый столбец, b
во второй столбец и c
в третий столбец. AS
здесь не действует.
Вы можете попробовать использовать CREATE TABLE new_table с другим именем поля и запустить INSERT INTO new_table SELECT old_field AS new_field FROM old_table