json
DuckDB 能处理 JSON 格式的文件。
导入 JSON
上面的实际上是对 read_json
的便捷写法,如果想要添加一些额外的参数就必须使用 read_json 了:
SQL
SELECT *
FROM read_json('todos.json',
format = 'array',
columns = {userId: 'UBIGINT',
id: 'UBIGINT',
title: 'VARCHAR',
completed: 'BOOLEAN'});
其中可用的参数包括:
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
compression | VARCHAR | 'auto' |
默认会根据后缀名检测,也可以指定 'gzip' 'zstd' 'none' |
filename | BOOL | false | 结果中是否应包含额外的 filename 列 |
format | VARCHAR | 'array' |
json 格式,主要就是 'array' 和 'newline_delimited' |
ignore_errors | BOOL | false | 是否忽略解析错误,只有 format='newline_delimited' 时才能 |
maximum_object_size | UINTEGER | 16777216 | JOSN 对象的最大单位(字节) | |
auto_detect | BOOL | false | 自动检测键的名称和值的数据类型 |
columns | STRUCT | - | 以{key1: 'INTEGER', key2: 'VARCHAR'} 这样的形式指定列类型 |
dateformat | VARCHAR | 'iso' |
指定解析日期时使用的日期格式 |
union_by_name | BOOL | false | 多个 JSON 文件的 schema 是否应该统一 |
导出 JSON
要导出数据到 JSON 文件有两种方式:
- 通过CLI Dot Command 的
.output path/filename.jsonl
配合.mode jsonl
来导出 - 通过来
COPY ... TO
SQL 语句来实现