【问题标题】:cassandra copy data from one columnfamily to another columnfamilycassandra 将数据从一个列族复制到另一个列族
【发布时间】:2017-01-26 06:35:33
【问题描述】:

我是 cassandra 的新手。我需要在 cassandra 的同一键空间中将数据从一个 columnFamily 复制到另一个 columnFamily 。例如,我们在键空间 K1 中有一个 A1 columnFamily ,所以现在我需要在同一个键空间 K1 中创建 columnFamily A2 。这里我需要从columnFamily A1 到 A2 .A1 和 A2 具有相同的架构。我阅读了在线文档,其中我们可以使用 sstable 加载程序将数据从一个 cassandra 集群复制到另一个。但是在这里我需要将数据从一个 columnFamily 复制到同一 keyspace 内的另一个 columnFamily 。

上面的任何想法。或者它是否可以实现,我不确定。

【问题讨论】:

    标签: cassandra cassandra-cli


    【解决方案1】:

    根据 cassandra 版本,您可以使用 copy cql 命令。要使用它,您需要一个 cql 客户端,例如与 cassandra 一起分发的客户端。

    首先,您必须使用以下命令将列族 A1 复制到 CSV 文件:

    COPY K1.A1 (column1, column2,...) TO 'temp.csv';
    

    然后将文件复制到新的列族

    COPY K1.A2 (column1, column2,...) FROM 'temp.csv';
    

    显然,您必须将列的名称更改为您的名称。

    更多信息:

    http://www.datastax.com/documentation/cassandra/1.2/index.html#cassandra/cql_reference/copy_r.html

    【讨论】:

    • 如果解决方案适合您,请检查答案是否正确,以便其他有同样疑问的人可以检查这是要采用的方法。
    • 我正在尝试做同样的事情,但它给了我类似 Invalid STRING 常量的错误,以前插入的值仍然存在。所以在执行 COPY K1.A1 之后是否有必要截断数据( column1,column2,...)到“temp.csv”;步骤..
    【解决方案2】:

    请注意最大限制。使用 COPY 命令时为 200 万行。见https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshCopy.html

    注意:仅使用 COPY FROM 导入行数少于 200 万的数据集。要导入大型数据集,请使用 Cassandra 批量加载器

    【讨论】:

      【解决方案3】:

      cqlsh -k mykeyspace -e 'COPY fromTable(columnNames) TO STDOUT' |头-n -1 | cqlsh -k mykeyspace -e 'COPY toTable(columnNames) FROM STDIN'

      【讨论】:

        猜你喜欢
        • 2015-01-14
        • 1970-01-01
        • 2015-12-02
        • 2014-09-27
        • 2012-11-25
        • 1970-01-01
        • 1970-01-01
        • 2015-02-21
        • 2018-06-26
        相关资源
        最近更新 更多