name: Snowflake 自动化 description: “自动化Snowflake数据仓库操作 – 列出数据库、模式和表,执行SQL语句,并通过Composio MCP集成管理数据工作流。” requires: mcp: - rube
Snowflake 自动化
自动化您的Snowflake数据仓库工作流 – 发现数据库,浏览模式和表,执行任意SQL(SELECT、DDL、DML),并将Snowflake数据操作集成到跨应用管道中。
工具包文档: composio.dev/toolkits/snowflake
设置
- 将Composio MCP服务器添加到您的客户端:
https://rube.app/mcp - 提示时连接您的Snowflake账户(账户凭据或密钥对认证)
- 开始使用下面的工作流
核心工作流
1. 列出数据库
使用 SNOWFLAKE_SHOW_DATABASES 来发现可用的数据库,支持可选过滤和时间旅行。
工具: SNOWFLAKE_SHOW_DATABASES
输入:
- like_pattern: 字符串(SQL通配符,例如 "%test%")-- 不区分大小写
- starts_with: 字符串(例如 "PROD")-- 区分大小写
- limit: 整数(最大10000)
- history: 布尔值(包括时间旅行保留期内已删除的数据库)
- terse: 布尔值(返回列子集:创建时间、名称、类型、数据库名、模式名)
- role: 字符串(用于执行的角色)
- warehouse: 字符串(可选,SHOW DATABASES不需要)
- timeout: 整数(秒)
2. 浏览模式
使用 SNOWFLAKE_SHOW_SCHEMAS 列出数据库内或账户范围内的模式。
工具: SNOWFLAKE_SHOW_SCHEMAS
输入:
- database: 字符串(数据库上下文)
- in_scope: "ACCOUNT" | "DATABASE" | "<特定数据库名>"
- like_pattern: 字符串(SQL通配符过滤)
- starts_with: 字符串(区分大小写前缀)
- limit: 整数(最大10000)
- history: 布尔值(包括已删除的模式)
- terse: 布尔值(仅列子集)
- role, warehouse, timeout: 字符串/整数(可选)
3. 列出表
使用 SNOWFLAKE_SHOW_TABLES 发现表,包括行数、大小和聚类键等元数据。
工具: SNOWFLAKE_SHOW_TABLES
输入:
- database: 字符串(数据库上下文)
- schema: 字符串(模式上下文)
- in_scope: "ACCOUNT" | "DATABASE" | "SCHEMA" | "<特定名称>"
- like_pattern: 字符串(例如 "%customer%")
- starts_with: 字符串(例如 "FACT", "DIM", "TEMP")
- limit: 整数(最大10000)
- history: 布尔值(包括已删除的表)
- terse: 布尔值(仅列子集)
- role, warehouse, timeout: 字符串/整数(可选)
4. 执行SQL语句
使用 SNOWFLAKE_EXECUTE_SQL 执行SELECT查询、DDL(创建/修改/删除)和DML(插入/更新/删除),支持参数化绑定。
工具: SNOWFLAKE_EXECUTE_SQL
输入:
- statement: 字符串(必需)-- SQL语句,多个语句用分号分隔
- database: 字符串(区分大小写,默认为DEFAULT_NAMESPACE)
- schema_name: 字符串(区分大小写)
- warehouse: 字符串(区分大小写,计算密集型查询必需)
- role: 字符串(区分大小写,默认为DEFAULT_ROLE)
- bindings: 对象(参数化查询值,防止SQL注入)
- parameters: 对象(Snowflake会话级参数)
- timeout: 整数(秒;0 = 最大604800秒)
示例:
"SELECT * FROM my_table LIMIT 100;""CREATE TABLE test (id INT, name STRING);""ALTER SESSION SET QUERY_TAG='mytag'; SELECT COUNT(*) FROM my_table;"
已知问题
| 问题 | 细节 |
|---|---|
| 区分大小写 | 在 SNOWFLAKE_EXECUTE_SQL 中,数据库、模式、仓库和角色名称区分大小写。 |
| 计算必需仓库 | SELECT和DML查询需要运行中的仓库。SHOW命令不需要。 |
| 多语句执行 | 多个语句用分号分隔自动顺序执行。 |
| SQL注入预防 | 始终使用 bindings 参数处理用户提供值以防止注入攻击。 |
| 限制分页 | SHOW 命令支持 limit(最大10000)和 from_name 用于基于游标的分页。 |
| 时间旅行 | 设置 history: true 以包括保留期内已删除的对象。 |
快速参考
| 工具标识 | 描述 |
|---|---|
SNOWFLAKE_SHOW_DATABASES |
列出数据库,支持过滤和时间旅行 |
SNOWFLAKE_SHOW_SCHEMAS |
列出数据库内或账户范围的模式 |
SNOWFLAKE_SHOW_TABLES |
列出表及其元数据(行数、大小、聚类) |
SNOWFLAKE_EXECUTE_SQL |
执行SQL:SELECT、DDL、DML,支持参数化绑定 |
由 Composio 提供支持