【问题标题】:How to overwrite fields when you COPY FROM data?COPY FROM 数据时如何覆盖字段?
【发布时间】:2019-12-22 13:47:06
【问题描述】:

当从 CSV 复制数据时,是否有可能以某种方式覆盖现有的计数器字段,
还是从数据库中完全删除行?

当我将COPY FROM 数据添加到现有行时,会汇总计数器。

我也不能完全 DELETE 这些行:
虽然似乎这些行已被删除,但当您重新COPY FROM CSV 中的数据时,
计数器字段继续增加。

【问题讨论】:

  • 什么是表结构?这些字段是计数器吗?
  • @AlexOtt 是的,没错,他们是计数器。

标签: cassandra copy cql cqlsh import-from-csv


【解决方案1】:

您不能将计数器设置为特定值 - 对它们而言,唯一支持的操作是增加或减少。要将它们设置为特定值,您需要将其减小到当前值,然后增加到所需值,但这需要您读取值。或者您需要删除相应的单元格(或整行),并使用所需的数量进行增加操作。

第二种方法可以更容易实现,但需要您首先根据 CSV 文件的内容使用 CQL DELETE 命令生成一个文件,然后使用COPY FROM - 如果自删除后没有人增加值,那么计数器将得到正确的值。

【讨论】:

  • 问题是第二个在我的情况下由于某种原因不起作用(即使删除行后计数器也不会重置)。这不是 Cassandra 的标准行为吗?
  • 可能版本相关?你用的是什么版本?为我工作:gist.github.com/alexott/a8e7d89318915caa3bc455d77a52ab32
猜你喜欢
  • 2020-05-12
  • 2012-09-01
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多