Кассандра: скопировать данные с функцией cql в столбце - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь экспортировать и импортировать данные из таблицы cassandra для изменения столбца меток времени в столбец unixepoch (т. Е. Введите timestamp to 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 Ответ

0 голосов
/ 04 февраля 2019

Команда COPY не поддерживает добавление дополнительных функций для обработки вывода.

Я бы сказал, что у вас есть несколько решений:

  • экспорт данных в csv с использованием COPY,преобразуйте значение метки времени (используя команды sh или язык высокого уровня) и импортируйте его в новую таблицу
  • , экспортируйте с помощью echo "select raw_data_field_id, toUnixTimestamp(dt_timestamp), value from raw.raw_data;" | ccm node1 cqlsh > output.csv, измените CSV, чтобы он имел правильный формат, и импортируйте его в новую таблицу (это решение взято из здесь )
  • написать свой собственный инструмент преобразования, используя один из драйверов Cassandra (python, java и т. д.).
  • возможно, вы могли бы попробовать что-то с UDF,но я не проверял это.

Вы должны знать, что COPY FROM поддерживает наборы данных, которые имеют менее 2 миллионов строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...