Cassandra:在列上使用cql函数复制数据
我正在尝试从cassandra表导出和导入数据,以便将时间戳列更改为unixepoch列(即将时间戳类型更改为bigint) 我尝试使用下面的命令将数据导出到csvCassandra:在列上使用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; 但获取错误为:复制命令不正确。 我如何解决这个问题,或者有更好
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命令或高级语言)并将其导入新表
- 使用
,更改csv,使其具有正确的格式并将其导入新表(此解决方案来自)echo“选择原始数据\u字段\u id、时间戳(dt\u时间戳)、原始原始数据的值”导出“| ccm node1 cqlsh>output.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