在Hive中,可以使用INSERT [OVERWRITE] TABLE
語句將一個或多個外部表的數據合并到另一個外部表中。以下是一個簡單的示例,說明如何將兩個外部表的數據合并到一個目標外部表中。
假設我們有兩個外部表:table1
和table2
,它們具有相同的結構,并且我們希望將它們的數據合并到一個新的外部表merged_table
中。
merged_table
,其結構與table1
和table2
相同:CREATE EXTERNAL TABLE merged_table (
column1 data_type,
column2 data_type,
...
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY 'delimiter'
STORED AS file_format;
INSERT [OVERWRITE] TABLE
語句將table1
和table2
的數據合并到merged_table
中:-- 將table1的數據合并到merged_table中
INSERT OVERWRITE TABLE merged_table
SELECT * FROM table1;
-- 將table2的數據合并到merged_table中
INSERT OVERWRITE TABLE merged_table
SELECT * FROM table2;
這樣,merged_table
將包含table1
和table2
的所有數據。請注意,如果兩個表中的數據有重復的行,OVERWRITE
選項將導致重復行被覆蓋。如果你想保留重復行,可以使用UNION ALL
語句:
-- 將table1的數據合并到merged_table中
INSERT INTO TABLE merged_table
SELECT * FROM table1;
-- 將table2的數據合并到merged_table中
INSERT INTO TABLE merged_table
SELECT * FROM table2;
-- 合并table1和table2的數據,保留重復行
INSERT INTO TABLE merged_table
SELECT * FROM table1
UNION ALL
SELECT * FROM table2;
這將把table1
和table2
的數據按行合并,同時保留重復行。