Cassandra:在列上使用cql函数复制数据

Cassandra:在列上使用cql函数复制数据,cassandra,Cassandra,我正在尝试从cassandra表导出和导入数据,以便将时间戳列更改为unixepoch列(即将时间戳类型更改为bigint) 我尝试使用下面的命令将数据导出到csv COPY raw_data(raw_data_field_id, toUnixTimestamp(dt_timestamp), value) TO 'raw_data_3_feb_19.csv' WITH PAGETIMEOUT=40 AND PAGESIZE=20; 但获取错误为:复制命令不正确。 我如何解决这个问题,或者有更好

我正在尝试从cassandra表导出和导入数据,以便将时间戳列更改为unixepoch列(即将时间戳类型更改为bigint)

我尝试使用下面的命令将数据导出到csv

COPY raw_data(raw_data_field_id, toUnixTimestamp(dt_timestamp), value) TO 'raw_data_3_feb_19.csv' WITH PAGETIMEOUT=40 AND PAGESIZE=20;
但获取错误为:
复制命令不正确。

我如何解决这个问题,或者有更好的方法来解决这个问题


COPY
命令不支持添加额外的函数来处理输出

我想说,您有几种解决方案:

  • 使用COPY以csv格式导出数据,转换时间戳值(使用sh命令或高级语言)并将其导入新表
  • 使用
    echo“选择原始数据\u字段\u id、时间戳(dt\u时间戳)、原始原始数据的值”导出“| ccm node1 cqlsh>output.csv
    ,更改csv,使其具有正确的格式并将其导入新表(此解决方案来自)
  • 使用Cassandra驱动程序之一(python、java等)编写自己的转换工具
  • 也许你可以用UDF试试,但我还没有测试过
您应该知道,
COPY FROM
支持行数少于200万的数据集

 raw_data_field_id | dt_timestamp                    | value
-------------------+---------------------------------+-------
                23 | 2018-06-12 07:15:00.656000+0000 | 131.3
 raw_data_field_id | dt_unix_timestamp_epoch         | value
-------------------+---------------------------------+-------
                23 | 1528787700656                   | 131.3