⌘+k ctrl+k
1.4 (LTS)
搜索快捷键 cmd + k | ctrl + k
DuckDB_% 元数据函数

DuckDB 提供了一系列表函数,用于提供有关当前数据库的元数据。这些函数位于 main 模式中,名称均以 duckdb_ 为前缀。

duckdb_ 表函数返回的结果集可以像普通表或视图一样使用。例如,您可以在 SELECT 语句的 FROM 子句中使用 duckdb_ 函数调用,并可在语句的其他位置(例如 WHERE 子句中)引用其返回结果集的列。

表函数本质上仍是函数,因此在调用它们以获取返回结果集时,必须在函数名后加上括号。

SELECT * FROM duckdb_settings();

或者,您也可以使用 CALL 语法来执行表函数。

CALL duckdb_settings();

在这种情况下,括号同样是必不可少的。

对于某些 duckdb_% 函数,还存在一个同名的视图,该视图也位于 main 模式中。通常,这些视图会对同名的 duckdb_ 表函数执行 SELECT 操作,同时过滤掉被标记为内部的对象。在此提及这一点是因为,如果您在调用 duckdb_ 表函数时意外省略了括号,您可能仍然会得到结果,但该结果来自同名视图。

示例

duckdb_views() 表函数 返回所有视图,包括标记为内部的视图。

SELECT * FROM duckdb_views();

duckdb_views 视图 返回未标记为内部的视图。

SELECT * FROM duckdb_views;

duckdb_columns

duckdb_columns() 函数提供有关 DuckDB 实例中可用列的元数据。

描述 类型
database_name 包含该列对象的数据库名称。 VARCHAR
database_oid 包含该列对象的数据库的内部标识符。 BIGINT
schema_name 包含定义此列的表对象的模式的 SQL 名称。 VARCHAR
schema_oid 包含该列所属表的模式对象的内部标识符。 BIGINT
表名 (table_name) 定义该列的表的 SQL 名称。 VARCHAR
table_oid 定义该列的表对象的内部标识符(名称)。 BIGINT
列名 (column_name) 该列的 SQL 名称。 VARCHAR
column_index 该列在其表中的唯一位置。 INTEGER
comment COMMENT ON 语句创建的注释。 VARCHAR
internal 如果此列是内置列则为 true,如果是用户定义的则为 false BOOLEAN
column_default 该列的默认值(以 SQL 表示)。 VARCHAR
is_nullable 如果该列可以包含 NULL 值则为 true;如果该列不能包含 NULL 值则为 false BOOLEAN
data_type 列数据类型的名称。 VARCHAR
data_type_id 列数据类型的内部标识符。 BIGINT
character_maximum_length 始终为 NULL。DuckDB 文本类型不会根据长度类型参数强制执行值长度限制。 INTEGER
numeric_precision 用于存储列值的单位数(以 numeric_precision_radix 指示的基数为准)。对于整数和近似数值类型,这是位数。对于十进制类型,这是数字位置的数量。 INTEGER
numeric_precision_radix numeric_precision 列中单位的数值基数。对于整数和近似数值类型,该值为 2,表示精度以位数表示。对于 decimal 类型,该值为 10,表示精度以十进制位置数表示。 INTEGER
numeric_scale 适用于 decimal 类型。表示小数位数的最大值(即小数点后可能出现的数字位数)。 INTEGER

information_schema.columns 系统视图提供了一种更标准化的方式来获取有关数据库列的元数据,但 duckdb_columns 函数也会返回有关 DuckDB 内部对象的元数据。(事实上,information_schema.columns 是作为对 duckdb_columns() 的查询来实现的。)

duckdb_constraints

duckdb_constraints() 函数提供有关 DuckDB 实例中可用约束的元数据。

描述 类型
database_name 包含该约束的数据库名称。 VARCHAR
database_oid 包含该约束的数据库的内部标识符。 BIGINT
schema_name 包含定义该约束的表的模式的 SQL 名称。 VARCHAR
schema_oid 包含定义该约束的表的模式对象的内部标识符。 BIGINT
表名 (table_name) 定义该约束的表的 SQL 名称。 VARCHAR
table_oid 定义该约束的表对象的内部标识符(名称)。 BIGINT
constraint_index 表示该约束在表定义中出现的位置。 BIGINT
constraint_type 表示约束的类型。适用值为 CHECK, FOREIGN KEY, PRIMARY KEY, NOT NULL, UNIQUE VARCHAR
constraint_text 以 SQL 短语表示的约束定义。(不一定是完整或语法有效的 DDL 语句。) VARCHAR
expression 如果约束是检查约束,则为被检查条件的定义,否则为 NULL VARCHAR
constraint_column_indexes 一个表列索引数组,指向出现在约束定义中的列。 BIGINT[]
constraint_column_names 一个出现在约束定义中的表列名称数组。 VARCHAR[]
constraint_name 约束的名称。 VARCHAR
referenced_table 该约束引用的表。 VARCHAR
referenced_column_names 该约束引用的列名。 VARCHAR[]

information_schema.referential_constraintsinformation_schema.table_constraints 系统视图提供了一种更标准化的方式来获取有关约束的元数据,但 duckdb_constraints 函数也会返回有关 DuckDB 内部对象的元数据。(事实上,information_schema.referential_constraintsinformation_schema.table_constraints 是作为对 duckdb_constraints() 的查询来实现的。)

duckdb_databases

duckdb_databases() 函数列出当前 DuckDB 进程中可访问的数据库。除了启动时关联的数据库外,该列表还包括稍后附加到 DuckDB 进程的数据库。

描述 类型
database_name 数据库名称,如果数据库是使用 ALIAS 子句附加的,则为别名。 VARCHAR
database_oid 数据库的内部标识符。 VARCHAR
path 与数据库关联的文件路径。 VARCHAR
comment COMMENT ON 语句创建的注释。 VARCHAR
tags 字符串键值对的映射。 MAP(VARCHAR, VARCHAR)
internal true 表示系统或内置数据库。false 表示用户定义的数据库。 BOOLEAN
type 该类型表示附加数据库实现的 RDBMS 类型。对于 DuckDB 数据库,该值为 duckdb VARCHAR
readonly 表示数据库是否为只读。 BOOLEAN

duckdb_dependencies

duckdb_dependencies() 函数提供有关 DuckDB 实例中可用依赖项的元数据。

描述 类型
classid 始终为 0 BIGINT
objid 对象的内部 ID。 BIGINT
objsubid 始终为 0 INTEGER
refclassid 始终为 0 BIGINT
refobjid 依赖对象的内部 ID。 BIGINT
refobjsubid 始终为 0 INTEGER
deptype 依赖关系的类型。可以是常规依赖 (n) 或自动依赖 (a)。 VARCHAR

duckdb_extensions

duckdb_extensions() 函数提供有关 DuckDB 实例中可用扩展的元数据。

描述 类型
扩展名称 扩展的名称。 VARCHAR
loaded 如果扩展已加载则为 true,如果未加载则为 false BOOLEAN
installed 如果扩展已安装则为 true,如果未安装则为 false BOOLEAN
install_path 如果扩展是内置的则为 (BUILT-IN),否则为实现该扩展的二进制文件所在的文件系统路径。 VARCHAR
description 描述扩展功能的可读文本。 VARCHAR
别名 该扩展的别名列表。 VARCHAR[]
extension_version 扩展的版本(稳定版本为 vX.Y.Z,不稳定版本为 6 字符哈希值)。 VARCHAR
install_mode 用于安装扩展的安装模式:UNKNOWN, REPOSITORY, CUSTOM_PATH, STATICALLY_LINKED, NOT_INSTALLED, NULL VARCHAR
installed_from 安装该扩展的存储库名称,例如 communitycore_nightly。空字符串表示 core 存储库。 VARCHAR

duckdb_functions

duckdb_functions() 函数提供有关 DuckDB 实例中可用函数(包括宏)的元数据。

描述 类型
database_name 包含此函数的数据库名称。 VARCHAR
database_oid 包含索引的数据库的内部标识符。 BIGINT
schema_name 函数所在的 SQL 模式名称。 VARCHAR
function_name 函数的 SQL 名称。 VARCHAR
函数类型 函数类型。值为以下之一:table, scalar, aggregate, pragma, macro VARCHAR
description 该函数的描述(始终为 NULL)。 VARCHAR
comment COMMENT ON 语句创建的注释。 VARCHAR
tags 字符串键值对的映射。 MAP(VARCHAR, VARCHAR)
返回类型 返回值的逻辑数据类型名称。适用于标量函数和聚合函数。 VARCHAR
parameters 如果函数有参数,则为参数名称列表。 VARCHAR[]
parameter_types 如果函数有参数,则为与参数列表相对应的逻辑数据类型名称列表。 VARCHAR[]
varargs 如果函数具有可变数量的参数,则为数据类型名称;如果函数没有可变数量的参数,则为 NULL VARCHAR
macro_definition 如果这是一个,则为定义它的 SQL 表达式。 VARCHAR
has_side_effects 如果这是纯函数则为 false。如果该函数会改变数据库状态(如序列函数 nextval()curval())则为 true BOOLEAN
internal 如果函数是内置的(由 DuckDB 或扩展定义)则为 true,如果是使用 CREATE MACRO 语句定义的则为 false BOOLEAN
function_oid 该函数的内部标识符。 BIGINT
examples 使用该函数的示例。用于生成文档。 VARCHAR[]
stability 函数的稳定性(CONSISTENT, VOLATILE, CONSISTENT_WITHIN_QUERYNULL)。 VARCHAR

duckdb_indexes

duckdb_indexes() 函数提供有关 DuckDB 实例中可用二级索引的元数据。

描述 类型
database_name 包含此索引的数据库名称。 VARCHAR
database_oid 包含索引的数据库的内部标识符。 BIGINT
schema_name 包含具有二级索引的表的模式的 SQL 名称。 VARCHAR
schema_oid 模式对象的内部标识符。 BIGINT
index_name 此二级索引的 SQL 名称。 VARCHAR
index_oid 此索引的对象标识符。 BIGINT
表名 (table_name) 具有索引的表名称。 VARCHAR
table_oid 表对象的内部标识符(名称)。 BIGINT
comment COMMENT ON 语句创建的注释。 VARCHAR
tags 字符串键值对的映射。 MAP(VARCHAR, VARCHAR)
is_unique 如果索引是用 UNIQUE 修饰符创建的则为 true,否则为 false BOOLEAN
is_primary 始终为 false BOOLEAN
expressions 始终为 NULL VARCHAR
sql CREATE INDEX SQL 语句表示的索引定义。 VARCHAR

请注意,duckdb_indexes 仅提供有关二级索引的元数据,即那些通过显式 CREATE INDEX 语句创建的索引。主键、外键和 UNIQUE 约束是使用索引维护的,但其详细信息包含在 duckdb_constraints() 函数中。

duckdb_keywords

duckdb_keywords() 函数提供有关 DuckDB 关键字和保留字的元数据。

描述 类型
keyword_name 关键字。 VARCHAR
keyword_category 指示关键字的类别。值为 column_name, reserved, type_functionunreserved VARCHAR

duckdb_log_contexts

duckdb_log_contexts() 函数提供有关 DuckDB 日志条目上下文的信息。

描述 类型
context_id 上下文标识符。duckdb_logs 表中的 context_id 列是指向此列的外键。 UBIGINT
scope 上下文的范围(connection, databasefile_opener)。 VARCHAR
connection_id 连接标识符。 UBIGINT
transaction_id 事务标识符。 UBIGINT
query_id 查询标识符。 UBIGINT
thread_id 线程标识符。 UBIGINT

duckdb_logs

duckdb_logs() 函数返回一个 DuckDB 日志条目表。

描述 类型
context_id 日志条目的上下文标识符。指向 duckdb_log_contexts 表的外键。 UBIGINT
timestamp 日志条目的时间戳。 TIMESTAMP
type 日志条目的类型。 VARCHAR
log_level 日志条目的级别(TRACE, DEBUG, INFO, WARN, ERRORFATAL)。 VARCHAR
message 日志条目的消息。 VARCHAR

duckdb_memory

duckdb_memory() 函数提供有关 DuckDB 缓冲管理器内存使用情况的元数据。

描述 类型
tag 内存标签。具有以下值之一:BASE_TABLE, HASH_TABLE, PARQUET_READER, CSV_READER, ORDER_BY, ART_INDEX, COLUMN_DATA, METADATA, OVERFLOW_STRINGS, IN_MEMORY_TABLE, ALLOCATOR, EXTENSION VARCHAR
memory_usage_bytes 已使用的内存(以字节为单位)。 BIGINT
temporary_storage_bytes 已使用的磁盘存储(以字节为单位)。 BIGINT

duckdb_optimizers

duckdb_optimizers() 函数提供有关 DuckDB 实例中可用优化规则(例如 expression_rewriter, filter_pushdown)的元数据。可以使用 PRAGMA disabled_optimizers 有选择地关闭这些规则。

描述 类型
name 优化规则的名称。 VARCHAR

duckdb_prepared_statements

duckdb_prepared_statements() 函数提供有关当前 DuckDB 会话中存在的预编译语句的元数据。

描述 类型
name 预编译语句的名称。 VARCHAR
statement SQL 语句。 VARCHAR
parameter_types 语句参数的预期类型。目前所有参数均返回 UNKNOWN VARCHAR[]
result_types 预编译语句返回表中各列的类型。 VARCHAR[]

duckdb_schemas

duckdb_schemas() 函数提供有关 DuckDB 实例中可用模式的元数据。

描述 类型
oid 模式对象的内部标识符。 BIGINT
database_name 包含此模式的数据库名称。 VARCHAR
database_oid 包含该模式的数据库的内部标识符。 BIGINT
schema_name 模式的 SQL 名称。 VARCHAR
comment COMMENT ON 语句创建的注释。 VARCHAR
tags 字符串键值对的映射。 MAP(VARCHAR, VARCHAR)
internal 如果这是内部(内置)模式则为 true,如果这是用户定义的模式则为 false BOOLEAN
sql 始终为 NULL VARCHAR

information_schema.schemata 系统视图提供了一种更标准化的方式来获取有关数据库模式的元数据。

duckdb_secret_types

duckdb_secret_types() 列出当前 DuckDB 会话中支持的密钥类型。

描述 类型
type 密钥类型的名称,例如 s3 VARCHAR
default_provider 默认密钥提供程序,例如 config VARCHAR
extension 注册该密钥类型的扩展,例如 aws VARCHAR

duckdb_secrets

duckdb_secrets() 函数提供有关 DuckDB 实例中可用密钥的元数据。

描述 类型
name 密钥的名称。 VARCHAR
type 密钥类型,例如 S3, GCS, R2, AZURE VARCHAR
provider 密钥提供程序。 VARCHAR
persistent 表示密钥是否为持久化的。 BOOLEAN
storage 存储密钥的后端。 VARCHAR
scope 密钥的作用域。 VARCHAR[]
secret_string 以字符串形式返回密钥内容。敏感信息(如访问密钥)会被脱敏。 VARCHAR

duckdb_sequences

duckdb_sequences() 函数提供有关 DuckDB 实例中可用序列的元数据。

描述 类型
database_name 包含此序列的数据库名称。 VARCHAR
database_oid 包含该序列的数据库的内部标识符。 BIGINT
schema_name 包含序列对象的模式的 SQL 名称。 VARCHAR
schema_oid 包含该序列对象的模式对象的内部标识符。 BIGINT
sequence_name 标识模式内序列的 SQL 名称。 VARCHAR
sequence_oid 此序列对象的内部标识符。 BIGINT
comment COMMENT ON 语句创建的注释。 VARCHAR
tags 字符串键值对的映射。 MAP(VARCHAR, VARCHAR)
temporary 序列是否为临时的。临时序列是瞬态的,仅在当前连接中可见。 BOOLEAN
start_value 序列的初始值。当第一次对此序列调用 nextval() 时,将返回此值。 BIGINT
min_value 序列的最小值。 BIGINT
max_value 序列的最大值。 BIGINT
increment_by 添加到序列当前值以获取序列下一个值的增量。 BIGINT
cycle 是否在取值范围外时重新循环序列。 BOOLEAN
last_value 如果从未通过 nextval(...) 从序列中取值则为 NULL。如果取过值则为 1 BIGINT
sql 此对象的定义,以 SQL DDL 语句表示。 VARCHAR

诸如 temporarystart_value 等属性对应于 CREATE SEQUENCE 语句中可用的各种选项,并在该处有完整记录。请注意,即使在 CREATE SEQUENCE 语句中未明确指定,这些属性也始终会填充在 duckdb_sequences 结果集中。

  1. 列名 last_value 暗示它包含从序列中抽取的最后一个值,但事实并非如此。如果从未从序列中取值,则为 NULL;如果曾经取过值,则为 1

  2. 如果序列循环,则序列将从其范围的边界重新开始,而不一定是指定的起始值。

duckdb_settings

duckdb_settings() 函数提供有关 DuckDB 实例中可用设置的元数据。

描述 类型
name 设置名称。 VARCHAR
value 设置的当前值。 VARCHAR
description 设置的描述。 VARCHAR
输入类型 设置值的逻辑数据类型。 VARCHAR
scope 设置的作用域(LOCALGLOBAL)。 VARCHAR

各种设置在配置页面中有详细描述。

duckdb_tables

duckdb_tables() 函数提供有关 DuckDB 实例中可用基表的元数据。

描述 类型
database_name 包含此表的数据库名称。 VARCHAR
database_oid 包含该表的数据库的内部标识符。 BIGINT
schema_name 包含基表的模式的 SQL 名称。 VARCHAR
schema_oid 包含基表的模式对象的内部标识符。 BIGINT
表名 (table_name) 基表的 SQL 名称。 VARCHAR
table_oid 基表对象的内部标识符。 BIGINT
comment COMMENT ON 语句创建的注释。 VARCHAR
tags 字符串键值对的映射。 MAP(VARCHAR, VARCHAR)
internal 如果这是用户定义的表则为 false BOOLEAN
temporary 这是否为临时表。临时表不持久化,仅在当前连接中可见。 BOOLEAN
has_primary_key 如果该表对象定义了 PRIMARY KEY 则为 true BOOLEAN
estimated_size 表中估计的行数。 BIGINT
column_count 该对象定义的列数。 BIGINT
index_count 与此表关联的索引数。此数字包括所有二级索引以及为维护 PRIMARY KEY 和/或 UNIQUE 约束而生成的内部索引。 BIGINT
check_constraint_count 该表中列上激活的检查约束数量。 BIGINT
sql 该对象的定义,以 SQL CREATE TABLE 语句表示。 VARCHAR

information_schema.tables 系统视图提供了一种更标准化的方式来获取有关数据库表(也包括视图)的元数据。但 duckdb_tables 返回的结果集包含一些 information_schema.tables 中未包含的列。

duckdb_temporary_files

duckdb_temporary_files() 函数提供有关 DuckDB 为从内存卸载数据而写入磁盘的临时文件的元数据。此函数主要用于调试和测试目的。

描述 类型
path 临时文件的名称。 VARCHAR
size 临时文件的大小(以字节为单位)。 BIGINT

duckdb_types

duckdb_types() 函数提供有关 DuckDB 实例中可用数据类型的元数据。

描述 类型
database_name 包含此模式的数据库名称。 VARCHAR
database_oid 包含该数据类型的数据库的内部标识符。 BIGINT
schema_name 包含类型定义的模式的 SQL 名称。始终为 main VARCHAR
schema_oid 模式对象的内部标识符。 BIGINT
type_name 该数据类型的名称或别名。 VARCHAR
type_oid 数据类型对象的内部标识符。如果为 NULL,则这是该类型的别名(由 logical_type 列中的值标识)。 BIGINT
type_size 在内存中表示该类型的值所需的字节数。 BIGINT
逻辑类型 该数据类型的“规范”名称。同一个 logical_type 可能被具有不同 type_name 的多种类型引用。 VARCHAR
类型类别 该类型所属的类别。同一类别内的数据类型在表达式中使用时通常表现出相似的行为。例如,NUMERIC type_category 包括整数、小数和浮点数。 VARCHAR
comment COMMENT ON 语句创建的注释。 VARCHAR
tags 字符串键值对的映射。 MAP(VARCHAR, VARCHAR)
internal 这是否为内部(内置)对象或用户对象。 BOOLEAN
labels 用于分类类型的标签。用于生成文档。 VARCHAR[]

duckdb_variables

duckdb_variables() 函数提供有关 DuckDB 实例中可用变量的元数据。

描述 类型
name 变量名称,例如 x VARCHAR
value 变量值,例如 12 VARCHAR
type 变量类型,例如 INTEGER VARCHAR

duckdb_views

duckdb_views() 函数提供有关 DuckDB 实例中可用视图的元数据。

描述 类型
database_name 包含此视图的数据库名称。 VARCHAR
database_oid 包含此视图的数据库的内部标识符。 BIGINT
schema_name 视图所在的 SQL 模式名称。 VARCHAR
schema_oid 包含该视图的模式对象的内部标识符。 BIGINT
view_name 视图对象的 SQL 名称。 VARCHAR
view_oid 此视图对象的内部标识符。 BIGINT
comment COMMENT ON 语句创建的注释。 VARCHAR
tags 字符串键值对的映射。 MAP(VARCHAR, VARCHAR)
internal 如果这是内部(内置)视图则为 true,如果这是用户定义的视图则为 false BOOLEAN
temporary 如果这是临时视图则为 true。临时视图不持久化,仅在当前连接中可见。 BOOLEAN
column_count 该视图对象定义的列数。 BIGINT
sql 此对象的定义,以 SQL DDL 语句表示。 VARCHAR

information_schema.tables 系统视图提供了一种更标准化的方式来获取有关数据库视图(也包括基表)的元数据。但 duckdb_views 返回的结果集还包含内部视图对象的定义以及一些 information_schema.tables 中未包含的列。

© 2025 DuckDB 基金会,阿姆斯特丹,荷兰