2016-12-27 19 views
0

Cassandraのintをbigintに移行する最も簡単な方法は何ですか?私はbigint型の新しい列を作成し、基本的にはその列の値を設定するスクリプトを実行することを考えました=すべての行のint列の値、そして元の列を削除し、新しい列の名前を変更します。しかし、私は誰かがより良い選択肢を持っているかどうかを知りたいのですが、このアプローチは私とまったく同じではないからです。Cassandra int to bigint

答えて

1

ALTERテーブルを変更してint列をvarintタイプに変更することができます。 the documentationALTER TABLEおよびdata types compatibilityのマトリックスをチェックします。

唯一の選択肢は、あなたが言ったことです:新しい列を追加し、行ごとにそれを設定します。最初の列を削除することは完全にオプションです。挿入を実行するときに値を割り当てないと、すべてがそのまま維持され、新しいレコードは領域を消費しません。

+0

私はバントタイプを見ていましたが、私はそれとbigintの違いが何であるか正確には分かりませんでした。私はvarintがJava BigIntegerにマップしているので、それは十分であるはずです。なぜなら、私が本当に気にしているのは、BigIntegerが技術的に上限を持たないと思うからです。カサンドラが宇宙などに関して懸念している限り、他の違いはありますか? – cloudwalker

0

ALTERテーブルにbigintをvarintで保存することができます。例を見てください

[email protected]:demo> CREATE TABLE int_test (id int, name text, primary key(id)); 
[email protected]:demo> SELECT * FROM int_test; 

id | name 
----+------ 

(0 rows) 
[email protected]:demo> INSERT INTO int_test (id, name) VALUES (215478936541111, 'abc'); 
[email protected]:demo> SELECT * FROM int_test ; 

id     | name 
---------------------+--------- 
    215478936541111 | abc 

(1 rows) 
[email protected]:demo> ALTER TABLE demo.int_test ALTER id TYPE varint; 
[email protected]:demo> INSERT INTO int_test (id, name) VALUES (9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999, 'abcd'); 
[email protected]:demo> SELECT * FROM int_test ; 

id                               | name 
------------------------------------------------------------------------------------------------------------------------------+--------- 
                               215478936541111 | abc                          
9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 | abcd 

(2 rows) 
[email protected]:demo>