サーチ…
構文
標準構文:
上書きテーブルの挿入tablename1 [PARTITION(partcol1 = val1、partcol2 = val2 ...)[IF NOT EXISTS]] select_statement1 FROM from_statement;
INSERT INTO TABLE tablename1 [PARTITION(partcol1 = val1、partcol2 = val2 ...)] select_statement1 FROM from_statement;
INSERT INTO TABLE tablename1 [PARTITION(partcol1 = val1、partcol2 = val2 ...)](z、y)select_statement1 FROM from_statement;
ハイブ拡張(複数の挿入):
FROM from_statement
上書きテーブルの挿入tablename1 [PARTITION(partcol1 = val1、partcol2 = val2 ...)[存在しない場合]] select_statement1
[INSERT OVERWRITE TABLE tablename2 [PARTITION ... [存在しない場合]] select_statement2]
[INSERT INTO TABLE tablename2 [PARTITION ...] select_statement2] ...;FROM from_statement
INSERT INTO TABLE tablename1 [PARTITION(partcol1 = val1、partcol2 = val2 ...)] select_statement1
[INSERT INTO TABLE tablename2 [PARTITION ...] select_statement2]
[上書きテーブルを挿入するtablename2 [パーティション... [存在しない場合]] select_statement2] ...;ハイブ拡張(動的パーティション挿入):
INSERT OVERWRITE TABLE tablename PARTITION(partcol1 [= val1]、partcol2 [= val2] ...)select_statement FROM from_statement;
INSERT INTO TABLE tablename PARTITION(partcol1 [= val1]、partcol2 [= val2] ...)select_statement FROM from_statement;
備考
上書きを挿入する
insert overwrite文は、使用されるselect文に基づいて新しいファイルを追加する前に、ターゲット表またはパーティション内の既存のファイルを削除します。表または表をロードするために使用されるDMLに構造変更があって、古いファイルが削除されないことがあることに注意してください。動的パーティション化を使用してテーブルにロードする場合、selectステートメントで定義されたパーティションだけが上書きされます。ターゲット内の既存のパーティションはそのまま残り、削除されません。
挿入する
insert into文は、使用されるselect文に基づいて新しいデータをターゲット表に追加します。
上書きを挿入する
insert overwrite table yourTargetTable select * from yourSourceTable;
テーブルに挿入
INSERT INTOはテーブルまたはパーティションに追加し、既存のデータをそのまま維持します。
INSERT INTO table yourTargetTable SELECT * FROM yourSourceTable;
表がパーティション化されている場合、その特定のパーティションに次のように静的に挿入できます。
INSERT INTO TABLE yourTargetTable PARTITION (state=CA, city=LIVERMORE)
select * FROM yourSourceTable;
テーブルが分割されている場合、その特定のパーティションに動的に挿入することができます(下図参照)。動的パーティション挿入を実行するには、以下のプロパティの下に設定する必要があります。
Dynamic Partition inserts are disabled by default. These are the relevant configuration properties for dynamic partition inserts:
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=non-strict
INSERT INTO TABLE yourTargetTable PARTITION (state=CA, city=LIVERMORE) (date,time)
select * FROM yourSourceTable;
テーブルからの複数の挿入
ハイブ拡張(複数の挿入):
FROM table_name
INSERT OVERWRITE TABLE table_one SELECT table_name.column_one,table_name.column_two
INSERT OVERWRITE TABLE table_two SELECT table_name.column_two WHERE table_name.column_one == 'something'