【发布时间】:2018-05-01 04:26:26
【问题描述】:
有什么方法可以在 clickhouse 中更改表并更改列名? 我只发现直接更改了表名,但没有更改单个列。
谢谢。
【问题讨论】:
标签: clickhouse
有什么方法可以在 clickhouse 中更改表并更改列名? 我只发现直接更改了表名,但没有更改单个列。
谢谢。
【问题讨论】:
标签: clickhouse
该功能已在 v20.4 中引入here。
ALTER TABLE table1 RENAME COLUMN old_name TO new_name
您还可以在 on 重命名多个列:
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
【讨论】: