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

如何以编程方式访问Hasura元数据?获取角色与表列信息

获取Hasura角色与表列信息的方法(Hasura 2.12.1)

一、获取所有角色信息

Hasura的角色(包括自定义角色)只能通过Metadata API获取,无需访问数据库内部表。调用export_metadata接口即可拿到包含角色列表的完整元数据:

curl -X POST https://your-hasura-instance/v1/metadata \
  -H "Content-Type: application/json" \
  -H "X-Hasura-Admin-Secret: your-admin-secret" \
  -d '{"type": "export_metadata", "version": 3}'

返回的JSON中,roles数组就是你创建的所有自定义角色。另外Hasura默认内置admin、anon、user三个角色,可直接补充到结果里。

二、获取所有表的列信息

有两种可靠方式,均适合自动化脚本调用:

方式1:Metadata API(推荐)

用get_tables接口批量拉取所有表的完整信息,包含列的详细属性:

curl -X POST https://your-hasura-instance/v1/metadata \
  -H "Content-Type: application/json" \
  -H "X-Hasura-Admin-Secret: your-admin-secret" \
  -d '{"type": "get_tables", "args": {"schema_pattern": "%", "table_pattern": "%"}}'

每个表对象的columns字段里,包含列名、数据类型、是否可为空等信息,直接解析即可。

方式2:GraphQL查询系统表

如果admin角色有权访问information_schema(默认有权限),可直接写GraphQL查询:

query GetAllTableColumns {
  information_schema_columns(
    where: {table_schema: {_nin: ["information_schema", "pg_catalog"]}}
  ) {
    table_schema
    table_name
    column_name
    data_type
    is_nullable
  }
}

用curl执行的命令:

curl -X POST https://your-hasura-instance/v1/graphql \
  -H "Content-Type: application/json" \
  -H "X-Hasura-Admin-Secret: your-admin-secret" \
  -d '{"query": "query GetAllTableColumns { information_schema_columns(where: {table_schema: {_nin: [\"information_schema\", \"pg_catalog\"]}}) { table_schema table_name column_name data_type is_nullable } }"}'

三、关于hasura_metadata表的说明

这个表是Hasura内部存储元数据的私有表,官方不对外暴露,且2.x版本中它的结构属于内部实现,随时可能变动,绝对不要直接访问它。使用上述Metadata API才是官方推荐的正确方式。

四、自动化脚本思路

  1. 用Python/Node.js等脚本语言调用上述API,获取JSON格式数据
  2. 解析提取角色列表、表和列的信息,转换成你需要的格式(比如Markdown)
  3. 用Git命令自动将生成的文件提交到GitHub仓库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:37:33