在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
的数据按行合并,同时保留重复行。