DuckDB是一个为在线分析处理(OLAP)设计的数据库管理系统(DBMS),以其多功能性著称,正如其吉祥物鸭子一样,能够飞翔、行走和游泳。简而言之,DuckDB旨在成为本地分析的DBMS。让看看它提供了哪些特性。
SQL,或称为“sequel”,是任何希望处理数据库的人的基本语言。不久前,在研究如何在Python中使用SQL,发现了这个名为DuckDB的出色解决方案。在看来,这个工具最出色的部分是能够直接在查询中读取CSV和Parquet文件,以及其卓越的性能。
DuckDB专注于分析活动,而不是像SQLite那样的事务处理。以下是DuckDB的一些主要特点:
在本文中,将学习如何安装DuckDB,导入DuckDB,读取和写入CSV和Parquet文件,元查询以及DBeaver SQL IDE。简而言之,包括:
让开始动手编码吧!
import duckdb
import pandas as pd
con = duckdb.connect()
df = pd.DataFrame({'Column 1' : [100]})
con.execute("SELECT * FROM df").df() # 查询Pandas DataFrame "df"
在下一部分,将学习如何使用CSV文件,并以非常方便和快速的格式读写Parquet文件。
让从数据科学家的好朋友CSV文件开始。
con.execute("SELECT * FROM read_csv_auto('my_local_file.csv')").df()
创建一个新表:
con.execute("CREATE TABLE tbl AS SELECT * FROM read_csv_auto('my_local_file.csv')")
将表中的数据导出到CSV文件:
con.execute("COPY tbl TO 'my_export_file.csv' (HEADER, DELIMITER ',')")
如果还没有接触过Parquet文件,现在是时候认识它了。在处理大量数据时,Parquet文件是必不可少的;不会在本文中详细介绍其优势,但可以看到,使用DuckDB处理这种文件格式非常简单易行。
con.execute("SELECT * FROM read_parquet('my_local_file.parquet')").df()
创建一个新表:
con.execute("CREATE TABLE tbl5 AS SELECT * FROM read_parquet('my_local_file.parquet')")
将表中的数据导出到Parquet文件:
con.execute("COPY tbl TO 'my_export_file.parquet' (FORMAT PARQUET)")
创建了几个表之后,列出它们可能非常方便,不是吗?可以使用SHOW TABLES来实现。
con.execute("SHOW TABLES").df()
要查看表的模式,使用DESCRIBE后跟表名。
df = pd.DataFrame({'Col1' : [100,90,30],'Col2' : [1,5,8]})
con.execute("CREATE TABLE tbl_df AS SELECT * FROM df")
con.execute("DESCRIBE tbl_df").df()
在看来,最有用的命令是SUMMARIZE;它返回列名、列类型、最小值、最大值、唯一值数量、平均值、标准差、四分位数、值的数量和空值的百分比。一个命令就提供了大量信息!
con.execute("SUMMARIZE tbl").df()
实际上有如此多的信息,有时不想要它,或者看起来可能很困难。可以使用SUMMARIZE命令与SELECT结合,仅获取所需列的摘要。
con.execute("SUMMARIZE SELECT Col1 FROM tbl").df()
DBeaver是一个功能强大且流行的桌面SQL编辑器和集成开发环境(IDE)。它既有开源版本也有企业版本。它对于直观检查DuckDB中的可用表和快速构建复杂查询非常有用。DuckDB的JDBC连接器允许DBeaver查询DuckDB文件,并通过扩展,访问DuckDB可以访问的任何其他文件(如Parquet文件)。
如果喜欢DuckDB,一定会喜欢这个IDE;它简单且轻量级。在本节中,将安装、连接并创建一个内存中的数据库,本地的,知道吗?让创建、读取并保存一个Parquet文件!
让开始吧!在本教程中,将向展示如何在Windows上安装:
在安装开始时,可以选择喜欢的语言:
DBeaver社区版:
现在,在数据库菜单中,点击新建数据库连接:
猜猜现在会选择哪一个?当然是DuckDB,不是吗?
在“路径”开始玩耍的地方,可以填写“:memory:”:
点击“测试连接…”按钮:
点击“下载”以从Maven下载DuckDB的JDBC驱动程序。下载完成后,点击“确定”,然后点击“完成”:
如果收到此消息,则连接成功。恭喜!
DBeaver SQL IDE的“Hello World!”的重要时刻:
现在是创建并写入Parquet文件的重要最终时刻: