DuckDB 可以读取一组动态的 CSV 文件吗? (CSV 文件路径表)

问题描述 投票:0回答:1

我有一大组 CSV 文件需要合并(如

UNION ALL
中所示),但首先我只想读取其中的一小部分。

我有一组 CSV 文件路径,我想使用 DuckDB 的

read_csv
来读取它们。

具体来说,我有一个表

table_csv_paths
和列
csv_file_path VARCHAR
。你可能认为我可以
read_csv(csv_file_path)
。以下所有尝试都失败了:

SELECT 
    *
FROM table_csv_paths AS csv_file, 
LATERAL read_csv(csv_file.csv_file_path, union_by_name = true, AUTO_DETECT=TRUE) AS t_csv
;
-- Error: IO Error: No files found that match the pattern "csv_file.csv_file_path"

SELECT 
    *
FROM table_csv_paths AS csv_file, LATERAL (
    SELECT * FROM read_csv(csv_file.csv_file_path, union_by_name = true, AUTO_DETECT=TRUE)
) AS t_csv
;
-- Error: IO Error: No files found that match the pattern "csv_file.csv_file_path"


WITH files_agg AS (
    SELECT list(csv_file.csv_file_path) AS csv_file_paths
    FROM table_csv_paths AS csv_file
)
SELECT * FROM files_agg, read_csv(csv_file_paths, union_by_name = true, AUTO_DETECT=TRUE);
-- Error: IO Error: No files found that match the pattern "csv_file_paths"

有没有办法实现这个目标?这似乎是一个很自然的用例,因为数据管道经常发展变得更加动态。

sql csv dynamic duckdb
1个回答
0
投票

目前,不,这是不可能的,可以通过在 SQL 之外执行部分逻辑来解决此限制。

功能请求位于 https://github.com/duckdb/duckdb/issues 跟踪这一点会很方便。

Carlo,致力于 DuckDB。

© www.soinside.com 2019 - 2024. All rights reserved.