跳转到主要内容
vsql_duckdb 在服务器进程内运行 DuckDB,因此一条 SQL 语句可以直接从 对象存储或磁盘读取 Parquet、CSV 和 JSON 文件。分析文件留在原处, 您可以把它们和自己的表放在一起查询,无需导出步骤,也无需运维第二个 引擎。
此扩展声明了三个预览能力,因此服务器必须以 --vsql_allow_preview_extensions=ON 启动。它还需要比 0.0.6 更新的 VillageSQL 服务器。

安装

vsql_duckdb 未随服务器捆绑,因此请先从存储库构建它,并把生成的 vsql_duckdb.veb 复制到 veb_dir 系统变量所指定的目录中。 然后安装它:
确认它已存在:
构建说明在存储库中。

新增内容

SHOW STATUS LIKE 'vsql_duckdb%' 报告两个计数器,它们在服务器进程的 整个生命周期内保留:
queries_total 统计已运行的 duckdb_query() 或 duckdb_scalar() 调用, 无论成功还是报错——duckdb_scalar() 因结果为空或值为 NULL 而返回 NULL 的调用算作成功。sql 参数本身为 NULL 的调用返回 NULL, 两个计数器都不递增。queries_failed 只统计报错的调用,并且包含在 queries_total 之内。

示例

问问它是什么:
运行一条不涉及任何文件的查询:
读取一个 CSV,并以 JSON 形式取回各行。从服务器自身磁盘读取默认是 关闭的,因此请先打开它:
用完后请再次关闭它,因为在您关闭之前它会一直保持开启:
由于结果是 JSON,JSON_TABLE 可以把它变回行,供您与自己的表联接。
allow_local_files 会打开服务器账户能读取的每一个文件,而 enable_external_access 默认开启,因此查询也可以访问网络。扩展函数 不像存储函数那样可以授权,因此在这里能运行 SQL 的任何人都能调用它们: 安装该扩展就把这两个开关的能力交给了每个账户。对象存储密钥保存在 密钥环中,vsql_duckdb.s3_secret_keyring_id 只是指定它的名称。
用 SET PERSIST 写入的设置在重启后仍然保留,但 UNINSTALL EXTENSION 会删除它。卸载并重新安装后,每个设置都会恢复默认值,重启也不会 恢复旧值。

另请参阅