AskTable
免费试用

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

无需编程,用自然语言提问,AI 自动生成 SQL 查询和可视化图表。立即免费试用 AskTable,体验 AI 驱动的数据分析。

cta.noCreditCard
cta.quickStart
cta.dbSupport