Skip to content

数据库集成工具

MyDeskBot 的数据库集成功能通过内置的 databaseClient 工具实现,允许您用自然语言连接到各种数据库并执行 SQL 查询,用于故障排除和数据分析。

注意databaseClient 是 MyDeskBot 的内置工具,需要在工具配置中启用后才能使用。

支持的数据库

关系型数据库

  • PostgreSQL (postgresql) - 具有高级 SQL 功能的完整支持
  • MySQL (mysql) - 完整的 MySQL 数据库支持
  • SQLite (sqlite) - 轻量级基于文件的数据库支持
  • SQL Server (sqlserver) - Microsoft SQL Server 集成
  • Oracle (oracle) - Oracle 数据库连接

大数据与分析

  • ClickHouse (clickhouse) - 高性能分析型数据库
  • Google BigQuery (bigquery) - 云数据仓库
  • Snowflake (snowflake) - 云数据平台

NoSQL 数据库

  • MongoDB (mongodb) - 文档数据库支持
  • Redis (redis) - 内存数据结构存储

会话使用示例

在聊天中直接使用数据库工具

用户可以直接在聊天中用自然语言请求数据库操作,MyDeskBot 会自动生成并执行相应的工具调用:

"请帮我检查 users 表中的用户数量,并查看最近注册的 10 位用户。"

MyDeskBot 会自动识别您的意图,并生成类似以下的工具调用(这个过程对用户透明):

yaml
# 大模型自动生成,用户无需关心
tools:
  - name: "check-users"
    tool: "databaseClient"
    args:
      databaseType: "postgresql"
      serverName: "localhost"
      database: "myapp"
      username: "postgres"
      password: "your_password"
      queries:
        - "SELECT COUNT(*) as total_users FROM users"
        - "SELECT id, name, email, created_at FROM users ORDER BY created_at DESC LIMIT 10"

凭证管理

当数据库需要认证时,您可以在对话中直接提供凭证,或者使用 connectionString 参数提供完整连接字符串:

"连接到 PostgreSQL 数据库 localhost:5432/myapp,用户名是 postgres,密码是 your_password,查询 users 表的数量。"

或者使用连接字符串:

"使用连接字符串 postgresql://postgres:your_password@localhost:5432/myapp 查询 users 表的数量。"

建议:对于频繁使用的数据库,建议将连接字符串保存在配置文件中,避免在对话中重复输入。

快速开始

基本查询

只需用自然语言描述您的需求:

"帮我查询一下 users 表里有多少用户,再看看前10个用户的信息。"

MyDeskBot 会自动生成相应的 SQL 查询并执行。

使用连接字符串

"连接到我的 MySQL 数据库(地址在 .env 中),看看有哪些表。"

SQLite 数据库

"帮我分析一下 database.db 文件中的数据,看看 products 表里价格超过100的商品有哪些。"

高级用法

复杂分析

"帮我分析一下最近30天的用户注册趋势,以及最近7天消费最多的前10位用户。"

基于文件的查询

"执行一下 analytics.sql 文件中的查询,把结果导出成 CSV 格式。"

试运行模式

"我想测试一下这个更新语句,先别真的执行,帮我验证一下语法对不对。"

使用场景

📈 商业智能

从您的数据中生成业务洞察,只需用自然语言描述:

"帮我看看今年各个类别的销售额,还有销量最高的前20个产品。"

🔍 数据质量分析

检查数据质量和完整性:

"帮我检查一下用户数据的完整性,看看有没有重复邮箱或者没有订单的用户。"

📊 性能监控

监控数据库性能:

"查看一下数据库的运行状态,看看哪些查询最慢。"

🔧 数据库维护

执行数据库维护任务:

"对 users 表做一下 VACUUM 和重建索引,然后看看表的状态统计。"

最佳实践

  1. 使用连接池:启用连接重用以获得更好的性能
  2. 设置行数限制:防止大型结果集使系统不堪重负
  3. 使用试运行:在生产环境中执行之前验证查询
  4. 监控性能:定期检查查询性能和优化
  5. 保护凭证:使用具有适当安全性的连接字符串
  6. 批量查询:将相关查询分组在一起
  7. 选择适当的格式:使用 CSV/JSON 进行数据导出,使用表格进行分析

附录:工具参数说明

databaseClient 工具支持以下参数,用户在对话中描述需求时,MyDeskBot 会自动解析并生成相应的工具调用:

参数类型说明
databaseTypestring数据库类型(postgresql, mysql, sqlite, oracle, sqlserver, mongodb, redis, clickhouse, bigquery, snowflake)
serverNamestring数据库服务器主机名或 IP 地址
portnumber数据库服务器端口
databasestring要连接的数据库名称
usernamestring数据库用户名
passwordstring数据库密码(建议使用环境变量 ${DB_PASSWORD}
connectionStringstring完整的连接字符串(替代单独的连接参数)
queriesstring[]要执行的 SQL 查询数组
queryFilestring包含要执行的 SQL 查询的文件路径
timeoutnumber查询超时时间,单位秒(默认:30)
outputFormatstring查询结果的输出格式(default, csv, json, vertical)
maxRowsnumberSELECT 查询返回的最大行数(默认:1000)
dryRunboolean如果为 true,则仅验证查询而不执行它们(默认:false)

使用示例

当您说 "帮我查询 users 表" 时,MyDeskBot 会自动生成类似以下的内部调用(这个过程对您透明):

yaml
tool: "databaseClient"
args:
  databaseType: "postgresql"
  serverName: "localhost"
  database: "myapp"
  username: "postgres"
  password: "your_password"
  queries:
    - "SELECT * FROM users LIMIT 1000"