[Hive] 查询结果保存

文章目录

  • 1.插入新表
        • 追加
  • 2.插入hdfs文件系统

1.插入新表

使用INSERT OVERWRITE语句的情况:

  1. 整个表:可以使用INSERT OVERWRITE TABLE table_name语句将查询结果直接覆盖整个表中的数据。
INSERT OVERWRITE TABLE table_name
SELECT * FROM ...
  1. 特定分区:可以使用INSERT OVERWRITE TABLE table_name PARTITION (partition_column = partition_value)语句将查询结果覆盖特定分区中的数据。
INSERT OVERWRITE TABLE table_name PARTITION (partition_column = partition_value)
SELECT * FROM ...

需要注意的是,在执行INSERT OVERWRITE语句时,原有的数据会被完全替换掉,所以请谨慎使用该语句,确保你清楚地了解其影响和结果。

追加

此外,还可以使用INSERT INTO语句来将查询结果追加到表或分区中,而不是覆盖现有的数据。INSERT INTO语句用于向目标表或分区中添加新的数据。

INSERT INTO TABLE table_name
SELECT * FROM ...

2.插入hdfs文件系统

在Hive SQL中,INSERT OVERWRITE DIRECTORY语句用于将查询结果写入指定的目录,并覆盖该目录下已有的数据。这个语句适用于将查询结果以文件的形式输出到指定目录。

以下是使用INSERT OVERWRITE DIRECTORY语句的示例:

INSERT OVERWRITE DIRECTORY '/path/to/directory'
SELECT *
FROM table_name
WHERE condition;

上述示例将从表table_name中选择满足条件的数据,并将结果以文件的形式覆盖输出到指定的目录/path/to/directory。

注意,目录路径需要是一个有效的Hadoop文件系统路径,如HDFS或S3等。

需要注意的是,使用INSERT OVERWRITE DIRECTORY语句时,目标目录必须是一个全新的空目录,否则会发生错误。

如果目录中已经存在文件,则会被覆盖删除。

因此,在执行该语句之前,请确保目标目录为空或不包含重要的数据,并且你具有对目标目录的写入权限

总结来说,INSERT OVERWRITE DIRECTORY语句可用于将查询结果输出到指定目录并覆盖现有数据。请谨慎使用,以免误操作删除重要数据。

你可能感兴趣的:(hive,hadoop,数据仓库)