【问题标题】:How to rename table in Cassandra CQL3如何在 Cassandra CQL3 中重命名表
【发布时间】:2013-08-09 08:39:26
【问题描述】:

我正在尝试重命名通过 CQLSH 创建的表。 例如。将表“AAA”重命名为“BBB”。找不到任何命令来执行此操作。有什么想法吗?

使用 [cqlsh 3.1.6 |卡桑德拉 1.2.8 | CQL 规范 3.0.0 | Thrift 协议 19.36.0]

【问题讨论】:

    标签: cassandra cql3


    【解决方案1】:

    如果我没记错的话,我不相信您可以重命名表或键空间,没有 CQL3 操作可以这样做,而且旧的 Thirft 接口中也没有。

    您不能这样做的一个原因是,由于 Cassandra 的分布式特性,这将是一件极其困难的事情,更改不能以原子方式完成,因此集群将处于不一致状态,并且很可能更新将丢失。它类似于创建和删除表,但在这些情况下,如果在创建表之前或删除表之后发布更新,则预计会丢失。

    据我所知,按照您的要求进行操作的唯一方法是创建新表并将所有数据从旧表移至新表,然后删除旧表。可能有一种方法可以在不移动数据的情况下执行此操作,但它可能需要您停止集群并更改属于该表的所有目录和文件的名称,并更改 system.schema_columnfamilies 表中的元数据(但我不确定你是否能做到这一点)。

    【讨论】:

    • vkroz:你试过上面的解决方案了吗?
    • 如何将一个表复制到另一个表?
    • 我知道这是保留但以防下一个人偶然发现它...将数据从一个表插入另一个表的最佳方法是导出数据,然后将其导入下一个表。如果要重命名表,您将执行导出,创建新表,然后导入数据。您可以在导出后随时删除旧表。 docs.datastax.com/en/cql/3.1/cql/cql_reference/copy_r.html
    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2013-11-03
    • 2013-08-09
    • 1970-01-01
    • 2013-01-12
    • 2014-01-30
    • 2013-11-15
    相关资源
    最近更新 更多