前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >DuckDB 读取数据

DuckDB 读取数据

作者头像
披头
发布2024-11-21 11:24:15
发布2024-11-21 11:24:15
22700
代码可运行
举报
文章被收录于专栏:datartisandatartisan
运行总次数:0
代码可运行

读取数据是操作数据的第一步。本文将详细介绍如何使用 DuckDB 进行数据读取,包括各种文件格式数据的读取方法及其适用场景。

CSV 文件读取:简单高效的数据导入

DuckDB 支持从 CSV 文件高效读取数据。以下是几种常用的方法:

  1. 直接查询 CSV 文件
代码语言:javascript
代码运行次数:0
复制
 SELECT * FROM 'test.csv';
  1. 使用 read_csv 函数
代码语言:javascript
代码运行次数:0
复制
 SELECT * FROM read_csv('test.csv', header = false);
  1. 使用 COPY 语句
代码语言:javascript
代码运行次数:0
复制
 COPY tbl FROM 'test.csv' (HEADER false);

此外,DuckDB 还能处理压缩的 CSV 文件,如 gzip 压缩的文件。

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM 'test.csv.gz';

Parquet 文件读取:高效的列式存储格式

Parquet 是一种高效的列式存储格式,DuckDB 同样支持直接读取和查询 Parquet 文件:

  1. 直接查询 Parquet 文件
代码语言:javascript
代码运行次数:0
复制
 SELECT * FROM 'test.parquet';
  1. 使用 read_parquet 函数
代码语言:javascript
代码运行次数:0
复制
 SELECT * FROM read_parquet('test.parquet');
  1. 使用 COPY 语句
代码语言:javascript
代码运行次数:0
复制
 COPY tbl FROM 'test.parquet';

JSON 文件读取:灵活的数据交换格式

JSON 格式广泛用于数据交换,DuckDB 提供了读取和查询 JSON 文件的功能:

  1. 直接查询 JSON 文件
代码语言:javascript
代码运行次数:0
复制
 SELECT * FROM 'test.json';
  1. 使用 read_json_auto 函数
代码语言:javascript
代码运行次数:0
复制
 SELECT * FROM read_json_auto('test.json');
  1. 使用 COPY 语句
代码语言:javascript
代码运行次数:0
复制
 COPY tbl FROM 'test.json';

多文件读取

上面介绍了 DuckDB 读取单文件的方法,DuckDB 还支持读取多文件,并将读取的内容视为单表。以 csv 文件为例:(parquet、json 文件同理)

  1. 任意目录层级下所有文件读取
代码语言:javascript
代码运行次数:0
复制
SELECT * FROM 'dir/**/*.csv';
  1. 任意目录层级下指定文件读取
代码语言:javascript
代码运行次数:0
复制
SELECT * FROM read_csv(['flights1.csv', 'flights2.csv']);
  1. 不同表头文件同时读取

一般情况下,批量读取多个文件时,要求每个文件的表头是相同的,也就是列名相同,这种情况下,使用上述两种方法批量读取即可。

特殊情况下,批量读取的文件的表头不同,DuckDB 也可以优雅的应对此种场景,只需添加 union_by_name 参数,如果还想区分数据的文件名称,再加上 filename 参数即可。

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM read_csv(['D:/duckdb/data/a/flights1.csv', 'D:/duckdb/data/b/flights2.csv'], union_by_name = true, filename = true);

总结

DuckDB 提供了多种数据读取和加载方法。这些方法使得 DuckDB 成为一个灵活且强大的数据库系统,适用于各种数据的读取和加载需求。无论是快速原型设计还是大规模数据处理,DuckDB 都能提供高效的解决方案。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学探究 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CSV 文件读取:简单高效的数据导入
  • Parquet 文件读取:高效的列式存储格式
  • JSON 文件读取:灵活的数据交换格式
  • 多文件读取
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档