2017-11-17 3 views
1

Ich muss die Tabelle ändern, um eine neue Spalte nach einer bestimmten Spalte oder als letzte Spalte hinzuzufügen, ich habe durch das Dokument, aber kein Glück.Cassandra Spalte nach bestimmter Spalte hinzufügen

+0

Was bedeuten soll "* eine neue Spalte bestimmte Spalte * hinzufügen"? –

+0

ist es ein Kassandra-Konzept @ PM77-1 –

+0

@ PM 77-1 - Ich habe die Frage bearbeitet, muss ich neue Spalte nach einigen vorhandenen Spalte hinzufügen. – Bharath

Antwort

3

Lassen Sie uns sagen, dass ich mit einem Tisch fange an, die diese Definition hat:

CREATE TABLE mykeyspace.letterstable (
    column_n TEXT, 
    column_b TEXT, 
    column_c TEXT, 
    column_z TEXT, 
    PRIMARY KEY (column_n)); 

1- Hinzufügen einer Spalte ist eine einfache Sache.

ALTER TABLE mykeyspace.letterstable ADD column_j TEXT; 

2- Nach dem Hinzufügen der neuen Spalte, meine Tabellendefinition wie folgt aussehen:

desc table mykeyspace.letterstable; 

CREATE TABLE mykeyspace.letterstable (
    column_n TEXT, 
    column_b TEXT, 
    column_c TEXT, 
    column_j TEXT, 
    column_z TEXT, 
    PRIMARY KEY (column_n)); 

Dies liegt daran, Spalten in Cassandra von ASCII-betischer Reihenfolge gespeichert sind, nach den Tasten (so column_n wird immer zuerst sein, weil es der einzige Schlüssel ist). Ich kann Cassandra nicht sagen, dass ich meine neue column_j nach column_z gehen möchte. Es wird es zwischen column_c und column_z allein setzen.

1

Cassandra speichert Tabellendaten basierend auf der Partition & Clustering-Schlüssel.

Standard-CQL für das Hinzufügen von Spalte:

ALTER TABLE keyspace.table ADD COLUMN column1 columnType; 

Lauf DESC Tabelle für eine bestimmte Tabelle über CQLSH nicht schildern, wie die Daten gespeichert werden. Es wird immer zuerst den Partitionsschlüssel & Clustering-Schlüssel auflisten; dann die restlichen Spalten in alphabetischer Reihenfolge.

https://docs.datastax.com/en/cql/3.1/cql/cql_reference/alter_table_r.html

Cassandra create table won't keep column order

Verwandte Themen