2014-05-05 3 views
0

У меня есть таблица, в которой хранятся метаданные нескольких соединений. Эта таблица должна быть восстановлена ​​после некоторых конкретных событий.Заменить таблицу в Apache Cassandra

Есть ли способ создать временную таблицу и заменить ее на новую? После поиска Google выяснилось, что переименование таблицы невозможно.

У кого-нибудь есть предложение?

ответ

3

Если «перестроить», вы имеете в виду, что хотите начать с нуля с помощью той же схемы, но нет данных, тогда вы можете вызвать TRUNCATE на столе, а затем повторно заселить его новыми данными. Если вы имеете в виду, что вам нужно поменять местами новое содержимое сразу, то лучшим вариантом является, вероятно, версия вашей таблицы, чтобы вы продолжали создавать новые таблицы («foo_v1, foo_v2» и т. Д.). Затем вам нужно параметризовать код клиента, чтобы узнать, какую версию они должны поговорить в какой-то момент. Вы можете отслеживать версию в другой таблице Cassandra.

+0

Я собираюсь попробовать этот вариант. – mariolpantunes

1

Возможный способ сделать это с помощью команды COPY (http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/copy_r.html)

Таким образом, вы можете сделать следующее:

  1. Копирование данных из временной таблицы в файл CSV.

    COPY временная таблица (поле1, поле2) TO 'temp.csv';

  2. Обрезать окончательный стол.

    TRUNCATE definitiveTable;

  3. Скопируйте файл csv в таблицу defintive.

    COPY временная таблица (поле1, поле2) FROM 'temp.csv';

Во всяком случае, вероятно, лучше, чтобы создать какой-то способ, чтобы получить данные из временной таблицы и итерации набора данных записи на окончательной таблице.

+0

Это хороший совет, но, вероятно, это медленный шаг для моих нужд. – mariolpantunes

Смежные вопросы