Skip to content

json

DuckDB 能处理 JSON 格式的文件。

导入 JSON

SQL
-- 自动推断 json 结构来读取 JSON 文件
SELECT * FROM 'todos.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 语句来实现

参考