cassandra:使用列上的cql函数复制数据

vybvopom  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(590)

我正在尝试从cassandra表中导出和导入数据,以便将timestamp列更改为unixepoch列(即将timestamp类型更改为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;

但得到的错误是: Improper COPY command. 我如何解决这个问题,或者有更好的方法来实现这一点?

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
pgx2nnw8

pgx2nnw81#

这个 COPY 命令不支持添加额外函数来处理输出。
我想说你有几种解决方案:
使用copy导出csv中的数据,转换时间戳值(使用sh命令或高级语言)并将其导入新表
导出使用 echo "select raw_data_field_id, toUnixTimestamp(dt_timestamp), value from raw.raw_data;" | ccm node1 cqlsh > output.csv ,更改csv,使其具有正确的格式并将其导入新表(此解决方案来自此处)
使用cassandra驱动程序(python、java等)编写自己的转换工具。
也许你可以尝试一些有自定义项的东西,但我还没有测试过。
你应该知道 COPY FROM 支持行数少于200万的数据集。

相关问题