⌘+k ctrl+k
1.4 (LTS)
搜索快捷键 cmd + k | ctrl + k
Parquet 导入

要从 Parquet 文件读取数据,请在查询的 FROM 子句中使用 read_parquet 函数

SELECT * FROM read_parquet('input.parquet');

或者,您可以省略 read_parquet 函数,让 DuckDB 根据文件扩展名自动推断

SELECT * FROM 'input.parquet';

要使用查询结果创建新表,请使用 CREATE TABLE ... AS SELECT 语句

CREATE TABLE new_tbl AS
    SELECT * FROM read_parquet('input.parquet');

要将数据从查询加载到现有表中,请使用 SELECT 语句中的 INSERT INTO

INSERT INTO tbl
    SELECT * FROM read_parquet('input.parquet');

或者,使用 COPY 语句将数据从 Parquet 文件加载到现有表中

COPY tbl FROM 'input.parquet' (FORMAT parquet);

动态调整架构

您可以使用以下技巧将 Parquet 文件加载到略有不同的架构中(例如,列数不同、类型更宽松等)。

假设您有一个包含两列 c1c2 的 Parquet 文件

COPY (FROM (VALUES (42, 43)) t(c1, c2))
TO 'f.parquet';

要添加文件中不存在的另一列 c3,请运行

FROM (VALUES (NULL::VARCHAR, NULL, NULL)) t(c1, c2, c3)
WHERE false
UNION ALL BY NAME
FROM 'f.parquet';

第一个 FROM 子句生成一个包含列的空表,其中 c1VARCHAR 类型。然后,使用 UNION ALL BY NAME 将 Parquet 文件合并。结果为

┌─────────┬───────┬───────┐
│   c1    │  c2   │  c3   │
│ varchar │ int32 │ int32 │
├─────────┼───────┼───────┤
│ 42      │  43   │ NULL  │
└─────────┴───────┴───────┘

有关更多选项,请参阅 Parquet 加载参考

© 2025 DuckDB 基金会,阿姆斯特丹,荷兰
行为准则 商标使用指南