web-dev-qa-db-ja.com

Hiveで、新しい列を追加する列を指定する方法はありますか?

できます

ALTER TABLE table_name ADD COLUMNS (user_id BIGINT)

非パーティション列の最後で、パーティション列の前に新しい列を追加します。

非パーティション列のどこかに新しい列を追加する方法はありますか?たとえば、この新しい列user_idをテーブルの最初の列として配置したいと思います。

7
Popcorn

はい、列の場所を変更することは可能ですが、CHANGE COLUMNを使用してテーブルに追加した後でのみ可能です。

あなたの場合、最初に以下のコマンドで列user_idをテーブルに追加します。

ALTER TABLE table_name ADD COLUMNS (user_id BIGINT);

ここで、user_id列をテーブルの最初の列として使用するには、change column with [〜#〜] first [〜#〜]句を使用します。

 ALTER TABLE table_name CHANGE COLUMN user_id user_id BIGINT first;

これにより、user_id列が最初の位置に移動します。

同様に、指定した列を他の列の後に移動する場合は、firstの代わりにAfterを使用できます。たとえば、user_id列の後にdob列を移動したいと思います。次に、私のコマンドは次のようになります。

ALTER TABLE table_name CHANGE COLUMN dob dob date AFTER user_id;

このコマンドはメタデータのみを変更することに注意してください。列を移動する場合、データはすでに新しいスキーマと一致している必要があります。または、他の方法で一致するように変更する必要があります。

15
Reena Upadhyay

ああ、user_idを2回リストした理由の説明は次のとおりです(タイプではありません):

// Next change column a1's name to a2, its data type to string, and put it after column b.
ALTER TABLE test_change CHANGE a1 a2 STRING AFTER b;
// The new table's structure is:  b int, a2 string, c int.
2
Ezra Justin Lee