
概述官网中文官网使用C编写、开源GitHub39.9K Star3.5K Fork可在任何地方运行的进程内SQL数据库即嵌入式分析型数据库。官方中文文档。将数据写入本地文件主要依赖COPY ... TO命令支持多种格式可通过FORMAT关键字指定也可从文件扩展名自动推断。格式(FORMAT)文件扩展名示例常用选项示例说明CSV.csv(HEADER, DELIMITER ,, QUOTE )最通用的表格格式选项丰富Parquet.parquet(FORMAT PARQUET, COMPRESSION ZSTD)列式存储适合大数据集压缩率高JSON.json(FORMAT JSON, ARRAY TRUE)导出为JSON数组或NDJSON客户端支持CLI、Python、Go、Java、Node.js、C/C、R、Rust、ODBC等可从官网下载也可使用命令行安装。基于命令行安装wingetinstallDuckDB.cli brewinstallduckdb对于Linux系统可直接下载二进制文件wgethttps://github.com/duckdb/duckdb/releases/download/v1.5.0/duckdb_cli-linux-amd64.zipunzipduckdb_cli-linux-amd64.zip /duckdb以Windows系统为例从官网下载duckdb_cli-windows-amd64.zip解压缩得到duckdb.exe打开终端SELECT * FROM generate_series(5);create table t1(id integer, name varchar);insert into t1 values(1,a),(2,b);select* from t1;copy t1 TOoutput.csv(HEADER, DELIMITER,);部分操作截图查看本地CSV文件Java引入依赖implementation(org.duckdb:duckdb_jdbc:1.4.4.0)Python生态基于pip安装pip install duckdb1.4.4Python SDK示例importduckdb connduckdb.connect()print(conn.execute(SELECT 42).fetchall())基于源码安装CSV开箱支持CSV能直接查询CSV文件还能够快速将CSV导入数据库表或将查询结果导出为CSV文件。自动解析文件内容并推断字段类型也可显式指定字段类型等参数。databases.csv内容如下name, type, version sqlite, oltp, 3.53.3 duckdb, olap, 1.5.4查询语句SELECT*FROMread_csv(databases.csv);SELECT*FROMread_csv(databases.csv,delim,,headertrue,columns{name:VARCHAR,type:VARCHAR,version:VARCHAR});-- 能根据文件扩展名自动识别CSV文件SELECT*FROMdatabases.csv;-- 使用FROM优先的查询语法FROMdatabases.csvSELECT*;-- 使用通配符批量读取多个文件并自动合并SELECT*FROMread_csv(data/*.csv);建表语句CREATETABLEdbASSELECT*FROMread_csv(databases.csv);CREATETABLEdbASFROMdatabases.csv;DELETEFROMdb;INSERTINTOdbSELECT*FROMread_csv(databases.csv);-- 大批量数据导入COPY dbFROMdatabases.csv;自动基于CSV文件推断字段类型并创建表然后导入全部数据整个过程一步完成。数据导出到CSV文件COPY dbTOoutput.csv(HEADER,DELIMITER,);-- 导出查询结果COPY(SELECTname,versionFROMdb)TOoutput.csv(HEADER,DELIMITER,);插件官方提供MySQL插件可把MySQL服务器当成一个可挂载的外部数据库连接之后可像访问本地DuckDB数据表一样访问MySQL中的数据支持写回MySQL。场景实时数据分析传统架构需要将业务系统数据库如MySQL通过ETL同步到数据仓库中进行数据分析DuckDB则可通过插件直接读取MySQL数据进行实时分析轻量级ETL数据管道许多企业需要将数据库同步到数据湖中一个命令就可完成从MySL到Parquet数据湖转换数据库迁移可作为中间组件实现MySQL到MySQL的数据迁移以及MySQL到PostgreSQL等的数据迁移轻量级数据平台很多中小公司没有数仓团队无法支持ClickHouse这种大型平台使用MySQLDuckDBMetabase这种轻量级报表分析系统维护成本极低安装插件INSTALL mysql首次使用时系统会自动加载插件也可手动加载LOAD mysql;加载外部数据库连接ATTACH hostlocalhost port3306 databasedbname userroot passwordxxxxxx AS mysqldb (TYPE mysql);上述语句暴露密码官方推荐使用密钥Secret管理器-- 创建密钥CREATESECRET(TYPEmysql,HOST127.0.0.1,PORT3306,DATABASEdbname,USERroot,PASSWORDXXXXXX);-- 挂载数据库ATTACHASmysqldb(TYPEmysql);MySQL实例连接成功即可像DuckDB数据表一样查询SELECTcustomer_id,first_nameFROMmysqldb.sakila.customerLIMIT1;将MySQL数据复制到DuckDB表中CREATETABLElocal_customerASFROMmysqldb.sakila.customer;也可将数据写入MySQL数据库-- 远程创建MYSQL数据表CREATETABLEmysqldb.t1(idINTEGER,nameVARCHAR);-- 写入数据INSERTINTOmysqldb.t1VALUES(42,DuckDB);如果担心误操作可能对MySQL数据库的影响可在ATTACH命令中使用只读参数ATTACHASmysqldb(TYPEmysql,READ_ONLY);可进一步将DuckDB作为轻量级ETL引擎实现数据管道功能-- MySQL数据导出Parquet文件COPY mysqldb.ordersTOorders.parquet;-- Parquet文件导入MySQLCOPY mysqldb.ordersFROMorders.parquet;提供函数mysql_query用于执行一个查询语句并返回结果mysql_execute用于执行任意MySQL命令包括DDL以及DMLSELECT*FROMmysql_query(mysqldb,SELECT version(););-- 创建远程 MySQL 数据表CALLmysql_execute(mysqldb,CREATE TABLE my_table (i INTEGER));Quack官方文档DuckDB一直采用类似SQLite的嵌入式架构路线没有独立服务进程没有数据库端口没有网络协议也没有连接池。大量用户都在尝试为DuckDB增加客户端-服务器能力包括自建RPC、Arrow Flight SQL、MotherDuck、pg_duckdb等。官方实现Quack远程协议插件形式可让两个DuckDB实例之间通过网络进行远程连接和访问。技术特点基于HTTP协议没有重复定义新的传输协议而是复用HTTP或HTTPS基于反向代理完全兼容已有的负载均衡、防火墙等技术单次网络往返传输每次查询都只需要一次网络 Round Trip大型结果集采用多次 FETCH 命令返回支持多线程并行优化适合分析查询和批量计算场景内部序列化机制没有采用传统的序列化如JSON而是采用类似WAL的内部序列化编码可避免传输过程中的格式转换和精度丢失客户端驱动的交互方式所有请求都由客户端发起服务器负责响应但从不主动推送消息和数据两种访问模式客户端既可通过quack_query执行无状态查询类似RPC也可通过ATTACH加载远程数据库DuckDB-Wasm集成DuckDB-Wasm完全支持Quack协议可通过浏览器访问远程数据库进行数据分析在第一个DuckDB实例中启动服务端CALLquack_serve(quack:localhost,tokensome_token);CREATETABLEhelloASFROMVALUES(world)v(s);quack_serve函数用于启动服务默认监听本地9494端口后建表hello。在第二个DuckDB实例中以客户端角色进行连接CREATESECRET(TYPEquack,TOKENsome_token);ATTACHquack:localhostASremote;FROMremote.hello;通过ATTACH命令访问远程服务器中的数据表。可视化很多如DataGripMotherDuck官网将DuckDB商业化的公司部分开源项目MCP-Server-MotherDuck506 Star88 Fork本地MCP服务器MetaBase_DuckDB_Driver166 Star25 ForkMetaBase驱动对比SnowFlakeDuckle官网使用Rust编写、开源GitHub893 Star70 Fork跨平台本地优先的桌面数据集成平台底层基于DuckDB执行计算兼具ETL工具、可视化数据管道编排器和AI助手等功能。功能特性可视化ETL/ELT用户在可视化的画布上通过拖拽节点设计数据处理管道Duckle会自动将整个管道编译成SQL然后交由DuckDB执行。用户还能查看生成的SQL支持实时预览数据结果丰富的连接器支持大量160的数据连接器类型包括数据库PostgreSQL、MySQL、SQL Server、Oracle、SQLite等、数据仓库Snowflake、BigQuery、Redshift等、NoSQLMongoDB、Cassandra、Elasticsearch、Redis等、向量存储pgvector、Qdrant、Milvus等、文件格式CSV、Parquet、Excel、JSON等、湖仓数据Iceberg、Delta Lake、DuckLake等、云存储AWS S3、Azure Blob、Google Cloud Storage等、SaaS系统Salesforce、HubSpot、GitHub、Jira、Stripe等以及REST API、GraphQL、OData、Kafka等系统数据转换目前已提供超过130个转换组件涵盖字段映射、数据清洗、多表关联、窗口计算、聚合分析、CDC增量同步、SCD维度建模以及AI数据准备等典型场景数据质量控制内置28个数据质量组件和专门的Validator节点对数据类型、格式规则、完整性、一致性及业务约束进行校验并且将不符合要求的数据自动路由到异常数据通道而非直接写入目标系统列级血缘分析提供企业级的列级血缘分析能力能够自动追踪数据管道中每个输出字段的来源及其转换过程流程控制提供19个控制流节点用于管理数据管道的执行逻辑和任务编排能力使数据处理流程不仅能够完成数据转换还能够实现条件判断、分支处理、错误控制和流程调度等复杂业务场景代码执行提供7个代码执行节点SQL、Shell、JavaScript、WebAssembly等用于处理可视化组件难以覆盖的复杂业务逻辑和个性化数据处理需求DuckDB引擎使用DuckDB作为统一执行引擎所有可视化数据管道都会自动编译为SQL由DuckDB的向量化列式计算引擎执行从而兼具高性能和易用性任务调度拥有完善的任务调度与自动化运行机制支持基于Cron表达式、固定时间间隔Interval以及文件监控File Watch等多种触发方式自动执行数据管道满足定时同步、增量采集、周期性数据加工和实时文件处理等场景需求AI助手官方AI助手Duckie基于Qwen 2.5 Coder支持使用自然语言描述需求并生成管道。模型默认运行在本地下载一次后即可离线运行不需要API KeyMCP支持提供内置MCP Server可将数据管道、数据源连接和数据处理能力以标准协议方式开放给Claude等大语言模型和AI Agent调用从官网下载二进制安装包第一次运行时会自动安装所需的 DuckDB 引擎和其他组件配置完成之后可通过系统自带示例了解Duckle的使用SQLFlowPython语言开发、基于DuckDB开源GitHub780 Star25 Fork高性能流处理引擎完全采用SQL构建实时数据管道在单机环境下即可提供极高的吞吐能力。可看作轻量版的 Apache Flink。官方文档功能特性数据源支持多种流式数据源包括 Kafka、Websocket执行引擎DuckDB负责高效的列式执行Apache Arrow提供零拷贝的高性能内存格式在数百MB内存情况下即可处理每秒数万条事件输出结果数据处理结果可写入Kafka、PG、Clickhouse、文件系统、S3对象存储等支持parquet、csv、JSON、IceBerg等文件格式易于使用完全基于SQL语句和配置文件构建数据流管道描述数据输入、转换处理、结果输出的全过程极大降低流计算的学习成本错误处理提供灵活的错误处理策略RAISE、IGNORE、DLQ可满足不同环境下的可靠性需求可观测性后台进程提供丰富的日志和指标信息方便通过Prometheus等工具进行监控官方Benchmark场景吞吐量消息数/秒最大RSS内存MB内存使用峰值MB基于内存的简单聚合45,000230130基于磁盘的简单聚合36,000256102补充额外信息13,000368124基于磁盘的CSV连接11,500312152基于内存的CSV连接33,200300107基于内存的滚动窗口44,00019896实战makesetup-dev# 简单验证dockerrun-v$(pwd)/dev:/tmp/conf-v/tmp/sqlflow:/tmp/sqlflow turbolytics/sql-flow:latest dev invoke /tmp/conf/config/examples/basic.agg.mem.yml /tmp/conf/fixtures/simple.json# 启动单节点Kafka服务docker-compose-fdev/kafka-single.yml up-d# 将测试消息发布到Kafkapython3 cmd/publish-test-data.py --num-messages10000--topicinput-simple-agg-mem# 启动Kafka Console消费者dockerexec-itkafka1 kafka-console-consumer --bootstrap-serverkafka1:9092--topicoutput-simple-agg-mem# 启动SQLFlowdockerrun-v$(pwd)/dev:/tmp/conf-v/tmp/sqlflow:/tmp/sqlflow-eSQLFLOW_KAFKA_BROKERShost.docker.internal:29092 turbolytics/sql-flow:latest run /tmp/conf/config/examples/basic.agg.mem.yml --max-msgs-to-process10000DuckQuery开源、基于DuckDB引擎开源GitHub23 StarAI可视化SQL工作台提供本地文件与远程数据库库一站式跨源分析。在线体验不支持连接远程数据库、读取Excel文件以及AI助手功能这些功能需要安装本地版本。功能特性本地文件导入直接拖拽CSV、Excel、Parquet、JSON到浏览器转化为DuckDB原生表不需要上传服务器查询速度极快外部数据库支持连接MySQL、 PG外部数据库基于DuckDB的统一查询引擎实现跨数据源包括文件和数据库分析查询工作台SQL编辑器提供代码补全、语法高亮、格式化等辅助功能同时还提供可视化的JOIN查询、集合运算以及透视表配置方便快速数据分析可视化图表可基于查询结果一键转换为柱状图、折线图、面积图、饼图、环形图、大数字等可视化结果数据导出查询结果可导出为CSV、JSON、Excel格式文件AI助手配置模型后可提供问数对话、报错医生、AI图表推荐等功能本地优先支持自托管通过本地引擎如DuckDB-Wasm直接执行查询数据不上传、计算不依赖云端服务让用户对数据拥有完全控制权安装GitHub ReleaseDocker、Docker Compose源码gitclone https://github.com/Chenkeliang/duckdb-query.gitcdduckdb-query./quick-start.sh浏览器打开http://localhost:48000开始体验