描述
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 格式: ParquetINSERT OVERWRITE DIRECTORY 'cosn://<your_bucket_name>/test_insert_overwrite_dir/output_parquet'USING parquetSELECT * FROM iod_test_table;-- CSV 格式INSERT OVERWRITE DIRECTORY 'cosn://<your_bucket_name>/test_insert_overwrite_dir/output_csv'USING csvSELECT * FROM iod_test_table;-- JSON 格式INSERT OVERWRITE DIRECTORY 'cosn://<your_bucket_name>/test_insert_overwrite_dir/output_json'USING jsonSELECT * FROM iod_test_table;-- 带 OPTIONSINSERT OVERWRITE DIRECTORYUSING parquetOPTIONS ('path' 'cosn://<your_bucket_name>/test_insert_overwrite_dir/output_parquet2')SELECT * FROM iod_test_table;