前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DuckDB 读取数据

DuckDB 读取数据

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

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

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

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

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

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

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

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

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

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

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

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

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

多文件读取

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Pandas vs Spark:数据读取篇
按照前文所述,本篇开始Pandas和Spark常用数据处理方法对比系列。数据处理的第一个环节当然是数据读取,所以本文就围绕两个框架常用的数据读取方法做以介绍和对比。
luanhz
2021/09/02
1.9K0
基于本地文件系统的列式数据库-DuckDB
这两天发现了一款有趣的数据库DuckDB,它的设计思路来源于sqlite,但是与sqlite不同的是,sqlite是行式数据库,而DuckDB是列式数据库。除此以外,两者非常相似:两个都是基于本地文件系统设计的,都有着完整的数据库体系(客户端、SQL解析器、SQL优化器和存储引擎等等),安装和使用都非常方便。在一些数据分析场景下,比如临时跑个数,不想安装MySQL或者分布式数据库等,应该大有可为。下面基于DuckDB的官方文档和相关博客,做一些简单介绍。
哒呵呵
2019/11/06
3.6K0
数据仓库之Hive快速入门 - 离线&实时数仓架构
了解了Hive中的SQL基本操作之后,我们来看看Hive是如何将SQL转换为MapReduce任务的,整个转换过程分为六个阶段:
端碗吹水
2020/11/11
4.9K0
​PySpark 读写 Parquet 文件到 DataFrame
本文中,云朵君将和大家一起学习如何从 PySpark DataFrame 编写 Parquet 文件并将 Parquet 文件读取到 DataFrame 并创建视图/表来执行 SQL 查询。还要学习在 SQL 的帮助下,如何对 Parquet 文件对数据进行分区和检索分区以提高性能。
数据STUDIO
2023/09/04
1.3K0
​PySpark 读写 Parquet 文件到 DataFrame
分析型数据库DuckDB基准测试
我们都知道Polars很快,但是最近DuckDB以其独特的数据库特性让我们对他有了更多的关注,本文将对二者进行基准测试,评估它们的速度、效率和用户友好性。
deephub
2023/10/06
2.1K0
分析型数据库DuckDB基准测试
大数据Presto(五):Presto优化与Impala对比
合理设置分区在读取数据时可以针对分区数据读取,可以减少Presto数据读取量,提升查询性能。
Lansonli
2022/11/26
1.7K1
大数据Presto(五):Presto优化与Impala对比
3.6K Star!推荐一款万能的数据分析神器!厉害炸了!
在数据驱动的今天,SQL(结构化查询语言)已成为数据分析师和数据库管理员不可或缺的工具。然而,随着数据量的增长和查询复杂性的提高,仅仅依赖传统的SQL工具可能无法满足高效、准确的数据分析需求。
测试开发技术
2024/05/30
3160
3.6K Star!推荐一款万能的数据分析神器!厉害炸了!
Flink与Spark读写parquet文件全解析
Parquet 是一种开源文件格式,用于处理扁平列式存储数据格式,可供 Hadoop 生态系统中的任何项目使用。 Parquet 可以很好地处理大量复杂数据。它以其高性能的数据压缩和处理各种编码类型的能力而闻名。与基于行的文件(如 CSV 或 TSV 文件)相比,Apache Parquet 旨在实现高效且高性能的平面列式数据存储格式。
从大数据到人工智能
2022/01/27
6.2K2
Flink与Spark读写parquet文件全解析
esProc SPL vs DuckDB:多源数据处理谁更胜一筹?
DuckDB 和 esProc SPL 都支持多样数据源处理,这里比较一下两者的差异。
朱迪
2025/03/14
860
数据源Parquet之使用编程方式加载数据
Parquet是面向分析型业务的列式存储格式,由Twitter和Cloudera合作开发,2015年5月从Apache的孵化器里毕业成为Apache顶级项目,最新的版本是1.8.0。
编程那点事
2023/02/25
3260
快速学习-Presto优化
1)合理设置分区 与Hive类似,Presto会根据元信息读取分区数据,合理的分区能减少Presto数据读取量,提升查询性能。 2)使用列式存储 Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。 3)使用压缩 数据压缩可以减少节点间数据传输对IO带宽压力,对于即席查询需要快速解压,建议采用Snappy压缩。 4)预先排序 对于已经排序的数据,在查询的数据过滤阶段,ORC格式支持跳过读取不必要的数据。比如对于经常需要过滤的字段可以预先排序。
cwl_java
2020/03/24
2K0
(数据科学学习手札161)高性能数据分析利器DuckDB在Python中的使用
  大家好我是费老师,就在几天前,经过六年多的持续开发迭代,著名的开源高性能分析型数据库DuckDB发布了其1.0.0正式版本。
Feffery
2024/06/06
9330
(数据科学学习手札161)高性能数据分析利器DuckDB在Python中的使用
n种方式教你用python读写excel等数据文件
python处理数据文件的途径有很多种,可以操作的文件类型主要包括文本文件(csv、txt、json等)、excel文件、数据库文件、api等其他数据文件。
派大星的数据屋
2022/04/02
4.1K0
利用DuckDB集成释放Postgres的分析能力
Postgres 生态系统正在蓬勃发展,使其成为 开发人员的首选 用于新的数据工作负载和数据库工具。关于 “为什么 Postgres 正在获胜” 已经有很多文章,并且有很多充分的理由——包括其可扩展性——使 Postgres 能够随着需求的出现而扩展到新的用例,例如 pg vector 能够满足各种 AI 需求。
云云众生s
2024/07/25
5620
使用pandas进行文件读写
pandas是数据分析的利器,既然是处理数据,首先要做的当然是从文件中将数据读取进来。pandas支持读取非常多类型的文件,示意如下
生信修炼手册
2020/06/24
2.3K0
使用pandas进行文件读写
大数据文件格式对比 Parquet Avro ORC 特点 格式 优劣势
在大数据环境中,有各种各样的数据格式,每个格式各有优缺点。如何使用它为一个特定的用例和特定的数据管道。数据可以存储为可读的格式如JSON或CSV文件,但这并不意味着实际存储数据的最佳方式。
大鹅
2021/06/16
5.7K0
PySpark实战指南:大数据处理与分析的终极指南【上进小菜猪大数据】
大数据处理与分析是当今信息时代的核心任务之一。本文将介绍如何使用PySpark(Python的Spark API)进行大数据处理和分析的实战技术。我们将探讨PySpark的基本概念、数据准备、数据处理和分析的关键步骤,并提供示例代码和技术深度。
上进小菜猪
2023/10/16
3.3K0
PySpark实战指南:大数据处理与分析的终极指南【上进小菜猪大数据】
20个经典函数细说Pandas中的数据读取与存储
大家好,今天小编来为大家介绍几个Pandas读取数据以及保存数据的方法,毕竟我们很多时候需要读取各种形式的数据,以及将我们需要将所做的统计分析保存成特定的格式。
用户6888863
2021/12/10
3.3K0
20个经典函数细说Pandas中的数据读取与存储
AWS的湖仓一体使用哪种数据湖格式进行衔接?
此前Apache Hudi社区一直有小伙伴询问能否使用Amazon Redshift(数仓)查询Hudi表,现在它终于来了。
大数据技术架构
2020/10/10
2K0
pandas读取数据(1)
访问数据是进行各类操作的第一步,本节主要关于pandas进行数据输入与输出,同样的也有其他的库可以实现读取和写入数据。
python数据可视化之路
2023/02/23
2.5K0
pandas读取数据(1)
推荐阅读
相关推荐
Pandas vs Spark:数据读取篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验