⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
DuckDB_% Metadata Functions

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
internal true 如果此列是内置的,false 如果它是用户定义的。 BOOLEAN
column_default 列的默认值(以SQL表示) VARCHAR
is_nullable true 如果该列可以包含 NULL 值;false 如果该列不能包含 NULL 值。 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实例中可用约束的元数据。

Column Description Type
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[]

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 进程的数据库。

Column Description Type
database_name 数据库的名称,或者如果数据库是使用ALIAS子句附加的,则为别名。 VARCHAR
database_oid 数据库的内部标识符。 VARCHAR
path 与数据库关联的文件路径。 VARCHAR
internal true 表示系统或内置数据库。False 表示用户定义的数据库。 BOOLEAN
type 类型指示附加数据库实现的RDBMS类型。对于DuckDB数据库,该值为duckdb VARCHAR

duckdb_dependencies

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

Column Description Type
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 实例中可用扩展的元数据。

Column Description Type
extension_name 扩展的名称。 VARCHAR
loaded true 如果扩展已加载,false 如果未加载。 BOOLEAN
installed true 如果扩展已安装,false 如果未安装。 BOOLEAN
install_path (BUILT-IN) 如果扩展是内置的,否则是实现扩展的二进制文件所在的文件系统路径。 VARCHAR
description 描述扩展功能的人类可读文本。 VARCHAR
aliases 此扩展的替代名称列表。 VARCHAR[]

duckdb_functions

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

Column Description Type
database_name 包含此函数的数据库名称。 VARCHAR
schema_name 函数所在模式的SQL名称。 VARCHAR
function_name 函数的SQL名称。 VARCHAR
function_type 函数的类型。值为以下之一:table,scalar,aggregate,pragma,macro VARCHAR
description 此函数的描述(始终为NULL VARCHAR
return_type 返回值的逻辑数据类型名称。适用于标量和聚合函数。 VARCHAR
parameters 如果函数有参数,则为参数名称的列表。 VARCHAR[]
parameter_types 如果函数有参数,则是一个与参数列表对应的逻辑数据类型名称列表。 VARCHAR[]
varargs 如果函数有可变数量的参数,则为数据类型的名称,如果函数没有可变数量的参数,则为NULL VARCHAR
macro_definition 如果这是一个,定义它的SQL表达式。 VARCHAR
has_side_effects false 如果这是一个纯函数。true 如果这个函数改变了数据库状态(如序列函数 nextval()curval())。 BOOLEAN
function_oid 此函数的内部标识符 BIGINT

duckdb_indexes

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

Column Description Type
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
is_unique true 如果索引是用 UNIQUE 修饰符创建的,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的关键字和保留字的元数据。

Column Description Type
keyword_name 关键词。 VARCHAR
keyword_category 表示关键字的类别。值为 column_namereservedtype_functionunreserved VARCHAR

duckdb_memory

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

Column Description Type
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 选择性地关闭。

Column Description Type
name 优化规则的名称。 VARCHAR

duckdb_schemas

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

Column Description Type
oid 模式对象的内部标识符。 BIGINT
database_name 包含此模式的数据库的名称。 VARCHAR
database_oid 包含模式的数据库的内部标识符。 BIGINT
schema_name 模式的SQL名称。 VARCHAR
internal true 如果这是一个内部(内置)模式,false 如果这是一个用户定义的模式。 BOOLEAN
sql 总是 NULL VARCHAR

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

duckdb_secrets

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

Column Description Type
name 密钥的名称。 VARCHAR
type 密钥的类型,例如 S3, GCS, R2, AZURE. VARCHAR
provider 密钥的提供者。 VARCHAR
persistent 表示密钥是否是持久的。 BOOLEAN
storage 用于存储密钥的后端。 VARCHAR
scope 秘密的范围。 VARCHAR[]
secret_string 返回秘密内容为字符串。敏感信息,例如访问密钥,会被编辑掉。 VARCHAR

duckdb_sequences

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

Column Description Type
database_name 包含此序列的数据库名称 VARCHAR
database_oid 包含序列的数据库的内部标识符。 BIGINT
schema_name 包含序列对象的SQL模式的名称。 VARCHAR
schema_oid 包含序列对象的模式对象的内部标识符。 BIGINT
sequence_name 标识模式中序列的SQL名称。 VARCHAR
sequence_oid 此序列对象的内部标识符。 BIGINT
temporary 此序列是否为临时序列。临时序列是短暂的,仅在当前连接中可见。 BOOLEAN
start_value 序列的初始值。当第一次在此序列上调用nextval()时,将返回此值。 BIGINT
min_value 序列的最小值。 BIGINT
max_value 序列的最大值。 BIGINT
increment_by 该值被添加到序列的当前值中,以从序列中获取下一个值。 BIGINT
cycle 当绘制下一个值会导致值超出范围时,序列是否应重新开始。 BOOLEAN
last_value NULL 如果从未使用 nextval(...) 从序列中提取值。如果提取了值,则为 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实例中可用设置的元数据。

Column Description Type
name 设置的名称。 VARCHAR
value 设置的当前值。 VARCHAR
description 设置的描述。 VARCHAR
input_type 设置值的逻辑数据类型。 VARCHAR

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

duckdb_tables

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

Column Description Type
database_name 包含此表的数据库名称 VARCHAR
database_oid 包含表的数据库的内部标识符。 BIGINT
schema_name 包含基础表的模式的SQL名称。 VARCHAR
schema_oid 包含基表的模式对象的内部标识符。 BIGINT
table_name 基础表的SQL名称。 VARCHAR
table_oid 基础表对象的内部标识符。 BIGINT
internal false 如果这是用户定义的表。 BOOLEAN
temporary 这是否是一个临时表。临时表不会被持久化,并且仅在当前连接中可见。 BOOLEAN
has_primary_key true 如果此表对象定义了 PRIMARY KEY BOOLEAN
estimated_size 表中估计的行数。 BIGINT
column_count 此对象定义的列数。 BIGINT
index_count 与此表关联的索引数量。此数量包括所有二级索引,以及为维护PRIMARY KEY和/或UNIQUE约束而生成的内部索引。 BIGINT
check_constraint_count 表中列上活动的检查约束的数量。 BIGINT
sql 此对象的定义,以SQL CREATE TABLE-statement 表示。 VARCHAR

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

duckdb_temporary_files

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

Column Description Type
path 临时文件的名称。 VARCHAR
size 临时文件的大小,以字节为单位。 BIGINT

duckdb_types

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

Column Description Type
database_name The name of the database that contains this schema. VARCHAR
database_oid 包含数据类型的数据库的内部标识符。 BIGINT
schema_name 包含类型定义的模式的SQL名称。始终为main VARCHAR
schema_oid Internal identifier of the schema object. BIGINT
type_name 此数据类型的名称或别名。 VARCHAR
type_oid 数据类型对象的内部标识符。如果为NULL,则这是该类型的别名(由logical_type列中的值标识)。 BIGINT
type_size 表示此类型值在内存中所需的字节数。 BIGINT
logical_type 此数据类型的“规范”名称。相同的logical_type可能被多个具有不同type_name的类型引用。 VARCHAR
type_category 此类型所属的类别。当在表达式中使用此类型的值时,相同类别内的数据类型通常表现出相似的行为。例如,NUMERIC 类型类别包括整数、小数和浮点数。 VARCHAR
internal 这是内部(内置)还是用户对象。 BOOLEAN

duckdb_variables

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

Column Description Type
name 变量的名称,例如,x VARCHAR
value 变量的值,例如 12 VARCHAR
type 变量的类型,例如 INTEGER VARCHAR

duckdb_views

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

Column Description Type
database_name 包含此视图的数据库的名称。 VARCHAR
database_oid 包含此视图的数据库的内部标识符。 BIGINT
schema_name 视图所在的模式的SQL名称。 VARCHAR
schema_oid 包含视图的模式对象的内部标识符。 BIGINT
view_name 视图对象的SQL名称。 VARCHAR
view_oid 此视图对象的内部标识符。 BIGINT
internal true 如果这是一个内部(内置)视图,false 如果这是一个用户定义的视图。 BOOLEAN
temporary true 如果这是一个临时视图。临时视图不是持久的,仅在当前连接中可见。 BOOLEAN
column_count 此视图对象定义的列数。 BIGINT
sql The definition of this object, expressed as SQL DDL-statement. VARCHAR

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