我正在尝试从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
1条答案
按热度按时间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万的数据集。