⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 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 指示约束的类型。适用值为 CHECKFOREIGN KEYPRIMARY KEYNOT NULLUNIQUE 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),否则为实现该扩展的二进制文件所在的 filesystem 路径。 VARCHAR
description 描述扩展功能的易读文本。 VARCHAR
aliases 此扩展的备用名称列表。 VARCHAR[]
extension_version 扩展版本(稳定版本为 vX.Y.Z,不稳定版本为 6 字符哈希值)。 VARCHAR
install_mode 用于安装扩展的安装模式:UNKNOWNREPOSITORYCUSTOM_PATHSTATICALLY_LINKEDNOT_INSTALLEDNULL 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
函数类型 函数类型。值为以下之一:tablescalaraggregatepragmamacro 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 函数的稳定性(CONSISTENTVOLATILECONSISTENT_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_namereservedtype_functionunreserved VARCHAR

duckdb_log_contexts

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

描述 类型
context_id 上下文的标识符。duckdb_logs 表中的 context_id 列是指向此列的外键。 UBIGINT
scope 上下文的范围(connectiondatabasefile_opener TODO: 更多?https://github.com/duckdb/duckdb/pull/15119)。 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 日志条目的类型。TODO: ?? VARCHAR
log_level 日志条目的级别(TRACEDEBUGINFOWARNERRORFATAL)。 VARCHAR
message 日志条目的消息。 VARCHAR

duckdb_memory

duckdb_memory() 函数提供有关 DuckDB 缓冲管理器元数据。

描述 类型
tag 内存标签。它具有以下值之一:BASE_TABLEHASH_TABLEPARQUET_READERCSV_READERORDER_BYART_INDEXCOLUMN_DATAMETADATAOVERFLOW_STRINGSIN_MEMORY_TABLEALLOCATOREXTENSION VARCHAR
memory_usage_bytes 使用的内存(字节)。 BIGINT
temporary_storage_bytes 使用的磁盘存储(字节)。 BIGINT

duckdb_optimizers

duckdb_optimizers() 函数提供有关 DuckDB 实例中可用的优化规则(例如 expression_rewriterfilter_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 会话中支持的 secret 类型。

描述 类型
type secret 类型的名称,例如 s3 VARCHAR
default_provider 默认的 secret 提供者,例如 config VARCHAR
extension 注册 secret 类型的扩展,例如 aws VARCHAR

duckdb_secrets

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

描述 类型
name secret 的名称。 VARCHAR
type secret 的类型,例如 S3GCSR2AZURE VARCHAR
provider secret 的提供者。 VARCHAR
persistent 指示 secret 是否持久。 BOOLEAN
storage 存储 secret 的后端。 VARCHAR
scope secret 的范围。 VARCHAR[]
secret_string 以字符串形式返回 secret 的内容。敏感信息(例如,访问密钥)将被处理。 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 类型类别包括整数、十进制数和浮点数。 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 中的列。