You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中是否存在Teradata DBC.TABLES/DBC.COLUMNS的等效对象?

Snowflake元数据查询等效方案

Snowflake内置了和Teradata dbc.tables、dbc.columns功能完全对等的系统视图,可直接实现指定数据库下的表、列元数据查询,不需要额外安装组件。

核心视图对应关系

  • Teradata dbc.tables(表级元数据)对应Snowflake两类视图:
    • 全账户批量查询推荐:SNOWFLAKE.ACCOUNT_USAGE.TABLES,覆盖账户下所有对象元数据,数据延迟约1小时,会保留已删除对象的历史记录
    • 实时查询推荐:各数据库下的INFORMATION_SCHEMA.TABLES,无数据延迟,仅返回当前角色有权限访问的对象
  • Teradata dbc.columns(列级元数据)对应Snowflake两类视图:
    • 全账户批量查询推荐:SNOWFLAKE.ACCOUNT_USAGE.COLUMNS
    • 实时查询推荐:各数据库下的INFORMATION_SCHEMA.COLUMNS

等效查询SQL示例

1. 查询A、B、C三个数据库下的所有表信息(完全匹配原Teradata语句逻辑)

使用ACCOUNT_USAGE视图写法最简便,和原Teradata查询逻辑一致,不需要拼接多段查询:

SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.TABLES
WHERE TABLE_CATALOG IN ('A', 'B', 'C') -- Snowflake中数据库名称对应字段为TABLE_CATALOG
  AND DELETED IS NULL; -- 过滤掉已经被删除的历史表记录

如果需要无延迟的实时结果,可以通过UNION ALL拼接三个库的INFORMATION_SCHEMA查询:

SELECT * FROM A.INFORMATION_SCHEMA.TABLES
UNION ALL
SELECT * FROM B.INFORMATION_SCHEMA.TABLES
UNION ALL
SELECT * FROM C.INFORMATION_SCHEMA.TABLES;

2. 查询A、B、C三个数据库下的所有列名清单

SELECT 
  TABLE_CATALOG AS DATABASE_NAME,
  TABLE_SCHEMA,
  TABLE_NAME,
  COLUMN_NAME,
  DATA_TYPE,
  CHARACTER_MAXIMUM_LENGTH,
  NUMERIC_PRECISION,
  IS_NULLABLE
FROM SNOWFLAKE.ACCOUNT_USAGE.COLUMNS
WHERE TABLE_CATALOG IN ('A', 'B', 'C')
  AND DELETED IS NULL;

注意:查询ACCOUNT_USAGE视图需要账号级MONITOR权限,普通业务角色如果没有该权限,可以使用对应库下的INFORMATION_SCHEMA视图查询自己有权限访问的对象元数据。

内容的提问来源于stack exchange,提问作者Harshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:48:29