get_table_columns
所属分类:数据资产感知 · Tool 名称:
get_table_columns
功能说明
实时连接指定数据源,获取某张表的列元数据列表,包括列名、数据类型、是否主键、是否可空、列注释。是「确认上游表结构」场景的核心 Tool——例如新增字段前确认上游是否已有该字段、编写同步 SQL 前核对列类型。
输入参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
datasourceName | string | 是 | 数据源唯一性名称(可通过 list_datasources 获取) |
tableName | string | 是 | 表名(可通过 list_tables 获取) |
输出结果
业务 JSON 直返(非信封结构),字段说明如下:
| 字段 | 类型 | 说明 |
|---|---|---|
datasourceName | string | 数据源名称(回显入参) |
tableName | string | 表名(回显入参) |
colsMeta | array | 表的列元数据列表 |
colsMeta[].name | string | 列名 |
colsMeta[].type | object | 列数据类型描述对象,见下表 |
colsMeta[].pk | boolean | 是否为主键列 |
colsMeta[].nullable | boolean | 是否可为空 |
colsMeta[].comment | string | 列注释(无注释时该字段不出现) |
colsMeta[].type 子字段:
| 字段 | 类型 | 说明 |
|---|---|---|
typeName | string | 类型名称,如 VARCHAR、BIGINT、DECIMAL 等 |
columnSize | integer | 列长度(如 VARCHAR(64) 的 64),不适用时不出现 |
unsigned | boolean | 数值列是否为无符号(仅允许非负数),不适用时不出现 |
decimalDigits | integer | 浮点 / 定点类型的小数位数,不适用时不出现 |
返回示例
{
"datasourceName": "order_mysql",
"tableName": "orders",
"colsMeta": [
{
"name": "order_id",
"type": { "typeName": "BIGINT", "columnSize": 20, "unsigned": true },
"pk": true,
"nullable": false,
"comment": "订单主键"
},
{
"name": "discount_rate",
"type": { "typeName": "DECIMAL", "columnSize": 5, "decimalDigits": 2 },
"pk": false,
"nullable": true
}
]
}
错误返回
| 情况 | 表现 |
|---|---|
datasourceName / tableName 为空 | MCP 层 isError: true,内容为参数错误描述文本 |
| 数据源不存在 | MCP 层 isError: true,内容类似 未找到数据源: order_mysql |
| 获取元数据失败(表不存在、连接异常等) | MCP 层 isError: true,内容类似 获取表列元数据失败: <原因> |
注意点
- 实时查询:会真实连接目标数据源读取元数据。
- 表名的写法需符合数据源插件的解析规则(一般为纯表名;部分数据源支持
db.table形式)。 - 返回列的顺序与数据库中的列定义顺序一致。
典型用法
在 Hermes 中的提问示例:
上游 MySQL 的 orders 表有 discount_rate 这个字段吗?是什么类型?
使用 get_table_columns 工具:查一下 order_mysql 库 orders 表的主键是哪个字段