INSERT OVERWRITE DIRECTORY

最近更新时间:2026-05-20 14:11:22

我的收藏

描述

INSERT OVERWRITE DIRECTORY 语句使用 Spark 文件格式或 Hive Serde 将新值覆盖写入目录中的现有数据。使用 Hive Serde 时必须启用 Hive 支持。

语法

INSERT OVERWRITE [ LOCAL ] DIRECTORY [ directory_path ]
{ spark_format | hive_format }
{ VALUES ( { value | NULL } [ , ... ] ) [ , ( ... ) ] | query }
其中 spark_format 定义为:
USING file_format [ OPTIONS ( key = val [ , ... ] ) ]
hive_format 定义为:
[ ROW FORMAT row_format ] [ STORED AS hive_serde ]

参数

参数
说明
directory_path
指定目标目录。LOCAL 关键字指定目录在本地文件系统上。
file_format
指定用于插入的文件格式:TEXT、CSV、JSON、PARQUET、ORC 等。
OPTIONS
指定文件格式写入的选项。
hive_format
指定 Hive 文件格式。
row_format
指定行格式。
hive_serde
文件格式:TEXTFILE、SEQUENCEFILE、RCFILE、ORC、PARQUET、AVRO。

示例

-- 创建测试表
CREATE EXTERNAL TABLE iod_test_table (id INT, name STRING)
USING PARQUET LOCATION 'cosn://<your_bucket_name>/test_insert_overwrite_dir/iod_test_table';
INSERT INTO iod_test_table VALUES (1, 'Alice'), (2, 'Bob');

-- Spark 格式: Parquet
INSERT OVERWRITE DIRECTORY 'cosn://<your_bucket_name>/test_insert_overwrite_dir/output_parquet'
USING parquet
SELECT * FROM iod_test_table;

-- CSV 格式
INSERT OVERWRITE DIRECTORY 'cosn://<your_bucket_name>/test_insert_overwrite_dir/output_csv'
USING csv
SELECT * FROM iod_test_table;

-- JSON 格式
INSERT OVERWRITE DIRECTORY 'cosn://<your_bucket_name>/test_insert_overwrite_dir/output_json'
USING json
SELECT * FROM iod_test_table;

-- 带 OPTIONS
INSERT OVERWRITE DIRECTORY
USING parquet
OPTIONS ('path' 'cosn://<your_bucket_name>/test_insert_overwrite_dir/output_parquet2')
SELECT * FROM iod_test_table;