AskTable
sidebar.freeTrial

AskTable 数据源接入指南:支持 33 种数据库的统一接入方案

AskTable 团队
AskTable 团队 2026-03-08

AskTable 支持 33 种数据源,包括关系型数据库、NoSQL、数据仓库、文件等。本文将全面介绍数据源的接入流程和最佳实践。


一、支持的数据源类型

1. 关系型数据库

MySQL 系列

  • MySQL 5.7+
  • MariaDB 10.3+
  • TiDB

PostgreSQL 系列

  • PostgreSQL 10+
  • CockroachDB
  • Greenplum

其他关系型

  • Oracle 11g+
  • SQL Server 2012+
  • SQLite 3.x
  • DB2

2. 数据仓库

云数据仓库

  • Snowflake
  • BigQuery
  • Redshift
  • Azure Synapse

开源数据仓库

  • ClickHouse
  • Apache Doris
  • StarRocks
  • Databend

3. NoSQL 数据库

文档数据库

  • MongoDB

时序数据库

  • InfluxDB
  • TimescaleDB

4. 文件数据源

表格文件

  • Excel (.xlsx, .xls)
  • CSV
  • JSON
  • Parquet

在线表格

  • 飞书多维表格
  • Google Sheets

5. 其他数据源

API 数据源

  • RESTful API
  • GraphQL

实时数据

  • Kafka
  • Flink

二、数据源接入流程

1. 接入流程图

加载图表中...

2. 详细步骤

步骤 1:选择数据源类型

  • 登录 AskTable
  • 进入"数据源"页面
  • 点击"添加数据源"
  • 选择数据库类型

步骤 2:配置连接信息

  • 填写主机地址
  • 填写端口号
  • 填写数据库名
  • 填写用户名和密码
  • 配置高级选项(可选)

步骤 3:测试连接

  • 点击"测试连接"按钮
  • 等待连接结果
  • 如果失败,查看错误信息

步骤 4:同步元数据

  • 选择要同步的 Schema
  • 选择要同步的表
  • 开始同步
  • 等待同步完成

步骤 5:配置权限

  • 创建访问策略
  • 创建角色
  • 分配权限

步骤 6:开始使用

  • 测试查询
  • 验证权限
  • 正式使用

三、常见数据源配置

1. MySQL

连接信息

{
  "host": "mysql.example.com",
  "port": 3306,
  "database": "mydb",
  "username": "readonly_user",
  "password": "********"
}

高级配置

{
  "ssl": true,
  "charset": "utf8mb4",
  "timezone": "+08:00",
  "connect_timeout": 10
}

最佳实践

  • ✅ 使用只读账号
  • ✅ 启用 SSL 连接
  • ✅ 设置连接超时
  • ✅ 使用连接池

创建只读用户

-- 创建只读用户
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'password';

-- 授予只读权限
GRANT SELECT ON mydb.* TO 'readonly_user'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

2. PostgreSQL

连接信息

{
  "host": "postgres.example.com",
  "port": 5432,
  "database": "mydb",
  "username": "readonly_user",
  "password": "********",
  "schema": "public"
}

高级配置

{
  "ssl_mode": "require",
  "application_name": "asktable",
  "connect_timeout": 10
}

创建只读用户

-- 创建只读用户
CREATE USER readonly_user WITH PASSWORD 'password';

-- 授予连接权限
GRANT CONNECT ON DATABASE mydb TO readonly_user;

-- 授予 schema 使用权限
GRANT USAGE ON SCHEMA public TO readonly_user;

-- 授予表查询权限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;

-- 授予未来表的查询权限
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly_user;

3. ClickHouse

连接信息

{
  "host": "clickhouse.example.com",
  "port": 8123,
  "database": "default",
  "username": "readonly_user",
  "password": "********",
  "protocol": "http"
}

高级配置

{
  "secure": true,
  "compression": true,
  "max_execution_time": 60
}

创建只读用户

-- 创建只读用户
CREATE USER readonly_user IDENTIFIED BY 'password';

-- 授予只读权限
GRANT SELECT ON default.* TO readonly_user;

4. Excel 文件

上传文件

  1. 选择"Excel"数据源类型
  2. 上传 Excel 文件
  3. 选择工作表
  4. 预览数据
  5. 确认导入

支持的格式

  • .xlsx(推荐)
  • .xls
  • .csv

注意事项

  • 文件大小限制:100MB
  • 行数限制:100,000 行
  • 第一行作为列名
  • 自动识别数据类型

5. 飞书多维表格

连接信息

{
  "app_id": "cli_xxxxx",
  "app_secret": "********",
  "app_token": "bascnxxxxx"
}

获取凭证

  1. 登录飞书开放平台
  2. 创建企业自建应用
  3. 获取 App ID 和 App Secret
  4. 获取多维表格的 App Token

权限配置

  • 需要"查看、评论和编辑多维表格"权限
  • 需要"获取多维表格元数据"权限

四、网络配置

1. 公网访问

场景:数据库有公网 IP

配置

{
  "host": "123.456.789.0",
  "port": 3306
}

安全建议

  • ✅ 使用 SSL/TLS 加密
  • ✅ 配置 IP 白名单
  • ✅ 使用强密码
  • ✅ 定期更换密码

2. 内网访问

场景:数据库在内网,无公网 IP

方案 A:VPN

AskTable → VPN → 内网数据库

方案 B:SSH 隧道

{
  "host": "localhost",
  "port": 3306,
  "ssh_tunnel": {
    "host": "jump.example.com",
    "port": 22,
    "username": "tunnel_user",
    "private_key": "-----BEGIN RSA PRIVATE KEY-----\n..."
  }
}

方案 C:本地部署 AskTable

内网 AskTable → 内网数据库

3. 云服务商配置

AWS RDS

  • 配置安全组,允许 AskTable IP
  • 启用公网访问(可选)
  • 使用 IAM 认证(推荐)

阿里云 RDS

  • 配置白名单
  • 启用外网地址(可选)
  • 使用 SSL 连接

腾讯云 TencentDB

  • 配置安全组
  • 开启外网访问(可选)
  • 启用 SSL 加密

五、元数据管理

1. 元数据同步

同步内容

  • 数据库列表
  • 表列表
  • 字段列表
  • 字段类型
  • 字段注释
  • 表注释

同步策略

  • 全量同步:同步所有元数据
  • 增量同步:只同步变更的元数据
  • 定时同步:每天自动同步
  • 手动同步:需要时手动触发

2. 表选择

选择策略

  • 只同步需要的表
  • 排除临时表
  • 排除测试表
  • 排除系统表

正则表达式过滤

包含:^(user|order|product).*
排除:.*(temp|test|backup).*

3. 字段描述

重要性

  • 帮助 AI 理解字段含义
  • 提高 SQL 生成准确率
  • 便于用户理解数据

最佳实践

-- 添加表注释
COMMENT ON TABLE users IS '用户表';

-- 添加字段注释
COMMENT ON COLUMN users.id IS '用户ID';
COMMENT ON COLUMN users.name IS '用户姓名';
COMMENT ON COLUMN users.created_at IS '创建时间';

六、性能优化

1. 连接池配置

参数说明

  • min_size:最小连接数
  • max_size:最大连接数
  • max_idle_time:最大空闲时间
  • connect_timeout:连接超时时间

推荐配置

{
  "pool": {
    "min_size": 2,
    "max_size": 10,
    "max_idle_time": 300,
    "connect_timeout": 10
  }
}

2. 查询优化

超时设置

{
  "query_timeout": 30,
  "max_rows": 10000
}

索引建议

  • 为常用查询字段添加索引
  • 为 JOIN 字段添加索引
  • 为 WHERE 条件字段添加索引

3. 缓存策略

元数据缓存

  • 缓存时间:1 小时
  • 自动刷新
  • 手动刷新

查询结果缓存

  • 相同查询复用结果
  • 缓存时间:5 分钟
  • 自动失效

七、故障排查

1. 连接失败

错误:无法连接到数据库

排查步骤

  1. 检查主机地址和端口
  2. 检查用户名和密码
  3. 检查网络连通性
  4. 检查防火墙规则
  5. 检查数据库是否运行

测试命令

# 测试网络连通性
ping mysql.example.com

# 测试端口
telnet mysql.example.com 3306

# 测试 MySQL 连接
mysql -h mysql.example.com -P 3306 -u username -p

2. 权限错误

错误:Access denied

排查步骤

  1. 检查用户名和密码
  2. 检查用户权限
  3. 检查主机访问限制

授权命令

-- 查看用户权限
SHOW GRANTS FOR 'username'@'%';

-- 授予权限
GRANT SELECT ON database.* TO 'username'@'%';

3. 元数据同步失败

错误:Failed to sync metadata

排查步骤

  1. 检查数据库连接
  2. 检查表是否存在
  3. 检查用户权限
  4. 查看错误日志

八、安全最佳实践

1. 账号安全

使用只读账号

  • ✅ 只授予 SELECT 权限
  • ✅ 不授予 INSERT/UPDATE/DELETE 权限
  • ✅ 不授予 DROP/CREATE 权限

密码安全

  • ✅ 使用强密码(16+ 字符)
  • ✅ 定期更换密码(每 90 天)
  • ✅ 不在代码中硬编码密码
  • ✅ 使用密钥管理服务

2. 网络安全

IP 白名单

允许的 IP:
- 123.456.789.0/24
- 234.567.890.0/24

SSL/TLS 加密

  • ✅ 启用 SSL 连接
  • ✅ 验证服务器证书
  • ✅ 使用 TLS 1.2+

3. 审计日志

记录内容

  • 数据源创建/修改/删除
  • 连接测试
  • 元数据同步
  • 查询执行

九、总结

数据源接入的关键点:

选择合适的数据源: ✅ 根据业务需求选择 ✅ 考虑性能和成本 ✅ 评估安全性

正确配置连接: ✅ 使用只读账号 ✅ 启用 SSL 加密 ✅ 配置连接池

优化性能: ✅ 添加索引 ✅ 设置超时 ✅ 使用缓存

保障安全: ✅ IP 白名单 ✅ 强密码策略 ✅ 审计日志

下一步


相关阅读

技术交流

cta.readyToSimplify

sidebar.noProgrammingNeededsidebar.startFreeTrial

cta.noCreditCard
cta.quickStart
cta.dbSupport