7

有什么方法可以更改表并更改 clickhouse 中的列名?我只发现以直接的方式更改了表名,但没有更改单个列。

谢谢。

4

2 回答 2

9

该功能已在此处引入 v20.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在那里没有效果。

于 2018-01-28T22:35:49.807 回答
1

您可以尝试将 CREATE TABLE new_table 与另一个字段名称一起使用并运行 INSERT INTO new_table SELECT old_field AS new_field FROM old_table

于 2017-11-18T04:27:54.027 回答