- 安装
- Documentation
- 入门指南
- 连接
- 数据导入
- 客户端API
- 概述
- C
- C++
- CLI
- Dart
- Go
- Java
- Julia
- Node.js (Neo)
- Node.js
- Python
- 概览
- 数据摄取
- DuckDB 和 Python 之间的转换
- DB API
- 关系型API
- Function API
- Types API
- Expression API
- Spark API
- API 参考
- 已知的Python问题
- R
- Rust
- Swift
- Wasm
- ADBC
- ODBC
- SQL
- 介绍
- 语句
- 概览
- ANALYZE
- ALTER TABLE
- ALTER VIEW
- ATTACH 和 DETACH
- CALL
- CHECKPOINT
- COMMENT ON
- COPY
- CREATE INDEX
- CREATE MACRO
- CREATE SCHEMA
- CREATE SECRET
- CREATE SEQUENCE
- CREATE TABLE
- CREATE VIEW
- CREATE TYPE
- DELETE
- DESCRIBE
- DROP
- 导出和导入数据库
- INSERT
- LOAD / INSTALL
- PIVOT
- 性能分析
- SELECT
- SET / RESET
- SET VARIABLE
- SUMMARIZE
- 事务管理
- UNPIVOT
- UPDATE
- USE
- VACUUM
- 查询语法
- SELECT
- FROM 和 JOIN
- WHERE
- GROUP BY
- GROUPING SETS
- HAVING
- ORDER BY
- LIMIT 和 OFFSET
- SAMPLE
- 解嵌套
- WITH
- WINDOW
- QUALIFY
- VALUES
- FILTER
- 集合操作
- 预编译语句
- 数据类型
- 概览
- Array
- Bitstring
- Blob
- 布尔
- 日期
- Enum
- Interval
- 列表
- 字面量类型
- 映射
- NULL值
- Numeric
- Struct
- 文本
- Time
- 时间戳
- 时区
- Union
- 类型转换
- 表达式
- 函数
- 概览
- 聚合函数
- 数组函数
- 位串函数
- Blob 函数
- 日期格式化函数
- 日期函数
- 日期部分函数
- 枚举函数
- 间隔函数
- Lambda 函数
- 列表函数
- 映射函数
- 嵌套函数
- 数值函数
- 模式匹配
- 正则表达式
- Struct 函数
- 文本函数
- 时间函数
- 时间戳函数
- 带时区的时间戳函数
- 联合函数
- 实用函数
- 窗口函数
- 约束
- 索引
- 元查询
- DuckDB的SQL方言
- 示例
- 配置
- 扩展
- 概述
- 核心扩展
- 社区扩展
- 使用扩展
- 扩展的版本控制
- Arrow
- 自动完成
- AWS
- Azure
- Delta
- Excel
- 全文搜索
- httpfs (HTTP 和 S3)
- Iceberg
- ICU
- inet
- jemalloc
- MySQL
- PostgreSQL
- 空间
- SQLite
- Substrait
- TPC-DS
- TPC-H
- VSS
- 指南
- 概述
- 数据查看器
- 数据库集成
- 文件格式
- 网络和云存储
- 概览
- HTTP Parquet 导入
- S3 Parquet 导入
- S3 Parquet 导出
- S3 Iceberg 导入
- S3 Express One
- GCS 导入
- Cloudflare R2 导入
- 通过HTTPS / S3使用DuckDB
- 元查询
- ODBC
- 性能
- Python
- 安装
- 执行SQL
- Jupyter Notebooks
- SQL on Pandas
- 从Pandas导入
- 导出到 Pandas
- 从Numpy导入
- 导出到Numpy
- SQL on Arrow
- 从Arrow导入
- 导出到 Arrow
- Pandas上的关系API
- 多线程 Python
- 与Ibis的集成
- 与 Polars 的集成
- 使用 fsspec 文件系统
- SQL 编辑器
- SQL 功能
- 代码片段
- 术语表
- 离线浏览
- 操作手册
- 开发
- 内部结构
- Sitemap
- Why DuckDB
- Media
- FAQ
- Code of Conduct
- Live Demo
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_constraints
和 information_schema.table_constraints
系统视图提供了一种更标准化的方式来获取关于约束的元数据,但 duckdb_constraints
函数也返回关于 DuckDB 内部对象的元数据。(事实上,information_schema.referential_constraints
和 information_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_name 、reserved 、type_function 和 unreserved 。 |
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 |
像 temporary
、start_value
等属性对应于 CREATE SEQUENCE
语句中可用的各种选项,并在那里有完整的文档记录。请注意,即使这些属性没有在 CREATE SEQUENCE
语句中明确指定,它们也始终会在 duckdb_sequences
结果集中填充。
列名
last_value
暗示它包含从序列中提取的最后一个值,但事实并非如此。如果从未从序列中提取过值,则它为NULL
,或者为1
(当曾经从序列中提取过值时)。如果序列循环,那么序列将从其范围的边界重新开始,不一定从指定的起始值开始。
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
中的列。
关于此页面
本文内容
- duckdb_columns
- duckdb_constraints
- duckdb_databases
- duckdb_dependencies
- duckdb_extensions
- duckdb_functions
- duckdb_indexes
- duckdb_keywords
- duckdb_memory
- duckdb_optimizers
- duckdb_schemas
- duckdb_secrets
- duckdb_sequences
- duckdb_settings
- duckdb_tables
- duckdb_temporary_files
- duckdb_types
- duckdb_variables
- duckdb_views