用途:在 MATLAB 中通过 Database Toolbox(R2026a 起内置 DuckDB)使用嵌入式、无服务器的分析型数据库引擎,对超出内存的大表格文件做 SQL 查询与预处理,或建立零配置的开发数据库。
主要能力:用 duckdb() 建立内存或文件连接;用 fetch 配合 read_csv、read_parquet、read_xlsx 等直接以 SQL 查询文件,无需先载入内存;支持过滤、聚合、去重、字符串清理、类型转换、排序、抽样、剖析与 LIMIT 等 SQL 可表达操作;支持扩展(如 httpfs、excel);可将文件数据持久化为 .duckdb 表供重复查询。
使用方式:连接用 conn = duckdb() 或 duckdb("mydata.duckdb"),只读用 duckdb("shared.duckdb", ReadOnly=true);用 isopen(conn) 检查、close(conn) 关闭。文件查询必须用 fetch 加 SQL,路径用单引号,如 fetch(conn, "SELECT * FROM read_csv('data.csv')");命名表简单行过滤用 sqlread 配 RowFilter,聚合或复杂查询用 fetch。不支持 databasePreparedStatement,写入用 sqlwrite。
适用场景:单文件且文件大小与可用内存比 ≥ 0.5 且可做 SQL 归约时;多文件 SQL 聚合(glob 为兜底);需要可移植开发数据库时。
限制:单文件能放入内存应使用 readtable 等原生 I/O;多文件优先 datastore/tall;无 SQL 归约时 DuckDB 无优势;数学密集或数值敏感操作(归一化、窗口统计、异常检测、插值、信号处理、机器学习特征)应归约后交回 MATLAB;连接 MySQL、PostgreSQL、SQLite 等外部库应使用各自接口;SQL 与 MATLAB 在 NULL 处理、排序、去重语义上可能不一致。需 R2026a+ 与 Database Toolbox。