2013-08-07 14 views
17

Próbuję zmienić nazwę tabeli utworzonej przez CQLSH. E.g. zmień nazwę tabeli "AAA" na "BBB". Nie można znaleźć żadnego polecenia, aby to zrobić. Jakieś pomysły?Jak zmienić nazwę tabeli w Cassandra CQL3

Korzystanie z [cqlsh 3.1.6 | Cassandra 1.2.8 | Specyfikacja CQL 3.0.0 | Thrift protocol 19.36.0]

Odpowiedz

23

Nie wierzę, że możesz zmienić nazwy tabel lub obszarów kluczy, nie ma operacji CQL3, aby to zrobić, i nic w starych interfejsach Thirft, jeśli dobrze pamiętam.

Jedną z przyczyn, dla których nie można tego zrobić, jest to, że Cassandra będzie bardzo trudna do wykonania ze względu na rozproszony charakter, zmiany nie można przeprowadzić atomowo, aby klaster znajdował się w niespójnym stanie, a większość prawdopodobne aktualizacje zostaną utracone. Jest podobny do tworzenia i upuszczania tabel, ale w takich przypadkach oczekuje się, że aktualizacje zostaną utracone, jeśli zostaną wydane przed utworzeniem tabeli lub po jej upuszczeniu.

Jedyny znany mi sposób zrobienia tego, o co prosisz, to utworzenie nowej tabeli i przeniesienie wszystkich danych ze starego do nowego, a następnie upuszczenie starej tabeli. Może istnieć sposób, aby to zrobić bez przenoszenia danych, ale prawdopodobnie wymagałoby to zatrzymania klastra i zmiany nazwy wszystkich katalogów i plików należących do tabeli, a także zmiany metadanych w tabeli system.schema_columnfamilies (ale ja ' nie jestem pewien, czy możesz to zrobić).

+0

vkroz: czy wypróbowałeś powyższe rozwiązanie? – Ztyx

+1

Co powiesz na sposób kopiowania jednej tabeli do drugiej? –

+0

Wiem, że to jest wstrzymane, ale na wypadek, gdyby następna osoba natknęła się na to ... Najlepszym sposobem na wstawienie danych z jednej tabeli do drugiej jest wyeksportowanie danych, a następnie zaimportowanie ich do następnej tabeli. Jeśli zmieniasz nazwę tabeli, robisz eksport, tworzysz nową tabelę, a następnie importujesz dane. Możesz usunąć starą tabelę w dowolnym momencie po wyeksportowaniu. https://docs.datastax.com/en/cql/3.1/cql/cql_reference/copy_r.html – ammills01