DuckDB 可以方便地读取包含 JSON 数据的文件。对于JSON 数据的文件,DuckDB 能够直接加载并解析其中的内容。它支持多种读取方式,如通过
read_json
函数可以将 JSON 数据读入到关系型数据表中。
DuckDB 处理json数据
加载查询数据
假设我们有简单的 JSON 文件data.json
,内容如下:
[
{
"name": "John",
"age": 30,
"city": "New York"
},
{
"name": "Alice",
"age": 25,
"city": "London"
}
]
可以使用以下 DuckDB 代码将其读取:
CREATE TABLE json_data AS SELECT * FROM read_json('data.json');
这样就把 JSON 数据中的每个对象转换为关系表中的一行,对象的属性成为表中的列。
同样也支持嵌套结构,示例json数据如下:
[
{
"name": "Bob",
"details": {
"job": "Engineer",
"salary": 50000
}
}
]
可以使用点好进行查询:
SELECT details.job FROM json_table WHERE name = 'Bob';
json函数
DuckDB 提供了一系列用于处理 JSON 数据的函数,这些函数可以帮助用户更方便地操作 JSON 数据。例如,json_extract
函数可以从 JSON 数据中提取指定的字段或子对象。
如果有一个包含复杂 JSON 结构的列json_column
,要提取其中特定的嵌套字段,可以使用json_extract
函数。假设 JSON 数据中有一个名为orders
的数组,每个元素包含product_name
和quantity
字段,要提取所有订单中的产品名称,可以使用以下查询:
SELECT json_extract(json_column, '$.orders[*].product_name') FROM json_tabl