【问题标题】:Change column name in a table in Clickhouse在 Clickhouse 中更改表中的列名
【发布时间】:2018-05-01 04:26:26
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    该功能已在 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 在那里无效。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 是的,我考虑过这一点.. 但这是一种非常不雅的方式.. 奇怪的是,没有内联方式来执行它,因为列的名称只是一个虚拟属性。 . 想办法改变它们应该很容易
      猜你喜欢
      • 1970-01-01
      • 2020-08-10
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 2018-01-10
      相关资源
      最近更新 更多