如何在DuckDB中直接将SELECT查询结果转换为JSON?
直接在DuckDB中生成目标格式JSON的方法
当然可以不用写入文件或借助Python转换,直接通过DuckDB的内置SQL函数生成你要的JSON格式,完全不需要依赖外部工具。
实现语句
针对你的需求,最直接的方式是用array_agg聚合列值为数组,再用json_build_object组合成目标JSON对象:
SELECT json_build_object( 'city', array_agg(city), 'temp_hi', array_agg(temp_hi) ) FROM weather;
执行这条SQL后,会直接返回你期望的结果:
{"city": ["San Francisco", "Vienna"], "temp_hi": [50, 35]}
原理说明
array_agg(column):将指定列的所有行值聚合为一个数组json_build_object(key1, value1, key2, value2...):按键值对构建JSON对象,这里把聚合后的数组作为对应键的值
额外说明
不需要启用额外的JSON扩展,上述函数是DuckDB核心功能自带的,适用于绝大多数新版本的DuckDB。这种纯SQL的方式比先导出到Python再转JSON更高效,避免了数据在客户端和数据库之间的传输开销。
内容的提问来源于stack exchange,提问作者Val
相关产品推荐
相关产品推荐

