有什么方法可以更改表并更改 clickhouse 中的列名?我只发现以直接的方式更改了表名,但没有更改单个列。
谢谢。
该功能已在此处引入 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
在那里没有效果。
您可以尝试将 CREATE TABLE new_table 与另一个字段名称一起使用并运行 INSERT INTO new_table SELECT old_field AS new_field FROM old_table