You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python中使用DuckDB查询指定的目标Parquet文件

在DuckDB中精准读取指定Parquet文件列表的方法

你可以通过以下两种实用方式,让DuckDB直接读取你在Python中筛选好的文件列表,避免通配符读取多余文件的开销:

方法1:参数化查询(推荐,安全且简洁)

DuckDB的Python API支持直接将文件列表作为参数传入read_parquet函数,无需手动拼接字符串:

import duckdb

# 假设你已筛选完成的目标文件列表
filenames = [
    "/db/2024/table2024-04-28.parquet",
    "/db/2024/table2024-04-29.parquet",
    "/db/2024/table2024-04-30.parquet",
    "/db/2024/table2024-05-01.parquet",
    "/db/2024/table2024-05-02.parquet",
    "/db/2024/table2024-05-03.parquet",
    "/db/2024/table2024-05-04.parquet"
]

# 连接DuckDB并执行精准查询
con = duckdb.connect()
count_result = con.execute("""
    SELECT count(*) as count
    FROM read_parquet(?)
""", [filenames]).fetchone()

print(f"统计结果:{count_result[0]}")
con.close()

方法2:手动拼接文件路径字符串(简单场景适用)

如果偏好直接拼接SQL语句,可以将文件列表转换为DuckDB可识别的数组格式字符串:

import duckdb

filenames = [
    "/db/2024/table2024-04-28.parquet",
    # ... 其余目标文件
]

# 将列表转为SQL数组格式的字符串
file_path_str = ", ".join([f"'{path}'" for path in filenames])

con = duckdb.connect()
count_result = con.execute(f"""
    SELECT count(*) as count
    FROM read_parquet([{file_path_str}])
""").fetchone()

print(f"统计结果:{count_result[0]}")
con.close()

注意:如果文件路径中包含单引号等特殊字符,需要先对字符进行转义,否则会导致SQL语法错误,因此更推荐使用参数化查询的方式。

内容的提问来源于stack exchange,提问作者Wai Yip Tung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 19:47:06