web-dev-qa-db-ja.com

Hiveテーブルの列を削除する

Hiveバージョン0.9を使用していて、Hiveテーブルの列を削除する必要があります。 Hiveコマンドのマニュアルをいくつか検索しましたが、バージョン0.14までのコマンドしか見つかりませんでした。 Hiveバージョン0.9でHiveテーブルの列を削除することはできますか?コマンドとは?ありがとう。

6
Cristina

Sqlのような以下のステートメントを使用して、Hiveテーブルからテーブル列を単に削除することはできません。

ALTER TABLE tbl_name drop column column_name ----機能しません。

そのため、Hiveテーブルから列を削除するショートカットがあります。

Hiveテーブルがあるとします。

このテーブルから、列Dobを削除します。 ALTER TABLE REPLACEステートメントを使用して列を削除できます。

ALTER TABLE test_tbl REPLACE COLUMNS(ID STRING,NAME STRING,AGE STRING);   you have to give the column names which you want to keep in the table
18
sunil

Hiveにドロップ列または削除列はありません。

SELECTステートメントは、0.13.0より前のHiveリリース、または構成プロパティHive.support.quoted.identifiersがnoneに設定されている場合、0.13.0以降のリリースで正規表現ベースの列指定を取得できます。

そうは言っても、以下を使用して新しいテーブルまたはビューを作成できます。

drop table if       exists database.table_name;
create table if not exists database.table_name as
select `(column_to_remove_1|...|column_to_remove_N)?+.+`
    from database.some_table
    where 
    ...
;

これにより、column_to_remove_1、...という名前の列を除く、some_tableからcolumn_to_remove_Nまでのすべての列を含むテーブルが作成されます。代わりにビューを作成することもできます。

3
invoketheshell
ALTER TABLE table_name REPLACE COLUMNS ( c1 int, c2 String);

注:列リストから列を削除します。一致した列を保持し、言及されていない列をテーブルスキーマから削除します。

1
Sujit Fulse

前述のように、alterステートメントを使用してテーブルを削除することはできません。

変更-置換は、すべての場合での動作が保証されているわけではありません。

私はここでこれに対する最良の答えを見つけました: https://stackoverflow.com/a/48921280/438545

0

hiveテーブルから列を削除することはできません。ただし、Hiveにテーブル(外部の場合)を削除し、(列を除外して)再作成したテーブルは、urデータを削除しません。だからあなたができることは(もしあなたがテーブル構造を持っていないなら)このコマンドを実行する:

show create table database_name.table_name;

次に、それをコピーして編集できます(列は削除されます)。その後、シェルの呼び出しに従って行うことができます。

0
Ankit Agrahari

テーブルの詳細は、empid、name、dept、salary、addressです。住所列を削除したい。クエリjdbc:Hive2://>のようにREPLACE COLUMNSと書くだけです。

0
ravi