【Skill 创作】DataBridge:自然语言↔多数据库 SQL ↔ Pandas 智能转换器,支持 Doris/MySQL/SelectDB 等方言

# 【Skill 创作】DataBridge:多数据库 SQL ↔ Pandas 智能转换器,支持 Doris/MySQL/SelectDB 等方言

## 1. Skill 简介

这是一个支持多数据库方言的 **SQL ↔ Pandas 双向转换 + 智能优化助手**。选择目标数据库(MySQL/Doris/StarRocks/SelectDB/ClickHouse 等),自然语言描述需求,一键生成对应版本的 SQL 或 Pandas 代码,并自动诊断优化。适合大数据开发、数据分析师、数据仓库工程师日常使用。

## 2. 使用场景

你为什么想做它?—— 因为我在工作中遇到了这些麻烦:

| 真实场景 | 之前的麻烦 | 做出来之后的好处 |

|----------|-----------|-----------------|

| **MySQL → Doris 迁移** | 手动改 SQL,经常忘记 Bitmap/HLL 等特殊函数 | 一键转换,自动适配 Doris 方言 |

| **SQL 转 Pandas** | 要写很多 merge、groupby、sort 代码,容易出错 | 生成可直接运行的 Pandas 代码,包含完整 import |

| **SQL 性能优化** | 依赖经验,不知道哪能优化 | AI 自动诊断,给出具体优化建议 |

| **跨团队协作** | 业务团队用 MySQL,数据团队用 Doris,SQL 交流困难 | 一键互转,降低沟通成本 |

真实场景:上周我在做一个 MySQL 业务表迁移到 Doris 的任务,有 20+ 条历史 SQL 需要改写,手动改了一天还没改完,差点加班 —— 所以做了这个 Skill 出来!

## 3. 创作过程

### 核心思路

把三个高频需求整合在一个 Skill 里:

1. SQL ↔ Pandas 转换

2. 跨数据库方言转换

3. SQL 智能优化

### 关键提示词设计

我是这样组织 System Prompt 的:

```

一、角色定义

二、数据库支持表(版本 + 关键特性)

三、三大核心功能模块(含函数映射表)

四、输出格式规范

五、对话示例

```

### 数据库方言知识库

为了让转换更准确,我整理了这些数据库的语法差异:

- **MySQL → Doris**:GROUP_CONCAT、LIMIT 语法、Bitmap 函数

- **MySQL → StarRocks**:TO_BITMAP、BITMAP_COUNT 函数差异

- **MySQL → ClickHouse**:coalesce、groupArray、formatDateTime 函数名不同

### 优化逻辑

内置了 7 个优化维度:

- 索引利用

- JOIN 顺序

- 子查询优化

- 聚合优化

- 分区裁剪

- 函数优化

- 数据倾斜

## 4. 使用步骤

### 步骤 1:选择数据库类型

先告诉系统你要用什么数据库(如:Doris 2.0、MySQL 8.0、StarRocks 3.0)

### 步骤 2:输入需求

三种输入方式都支持:

- :white_check_mark: 自然语言描述(“统计每个用户的月消费金额”)

- :white_check_mark: SQL 查询(复制粘贴现有 SQL)

- :white_check_mark: Pandas 代码(需要转成 SQL)

### 步骤 3:获取结果

系统会输出:

1. 目标数据库的 SQL 代码

2. 对应的 Pandas 代码

3. 语法差异说明

4. (可选)优化建议

## 5. 效果展示

### 示例 1:自然语言 → SQL + Pandas

**输入**

```

目标数据库:Doris 2.0

需求:统计每个用户2024年每月的消费金额,只显示金额大于500的,按金额降序排列

```

**输出**

```sql

SELECT

user_id,

DATE_FORMAT(order_date, '%Y-%m') AS month,

SUM(amount) AS total_amount

FROM orders

WHERE order_date >= ‘2024-01-01’

AND order_date < ‘2025-01-01’

GROUP BY user_id, DATE_FORMAT(order_date, ‘%Y-%m’)

HAVING SUM(amount) > 500

ORDER BY total_amount DESC;

```

```python

import pandas as pd

df = pd.read_csv(‘orders.csv’)

df[‘order_date’] = pd.to_datetime(df[‘order_date’])

df[‘month’] = df[‘order_date’].dt.to_period(‘M’).astype(str)

result = (

df\[(df\['order_date'\] >= '2024-01-01') & (df\['order_date'\] < '2025-01-01')\]

.groupby(\['user_id', 'month'\], as_index=False)\['amount'\]

.sum()

.rename(columns={'amount': 'total_amount'})

)

result = result[result[‘total_amount’] > 500]

result = result.sort_values(‘total_amount’, ascending=False)

```

-–

### 示例 2:MySQL → Doris 转换

**输入**(一段 MySQL 8.0 SQL):

```sql

SELECT

a.order_id,

b.user_name,

COUNT(\*) AS order_count,

SUM(a.amount) AS total_amount

FROM orders a

LEFT JOIN users b ON a.user_id = b.id

WHERE a.created_at > ‘2024-01-01’

GROUP BY a.order_id, b.user_name;

```

**输出**

> :white_check_mark: 语法检查通过,Doris 2.0 完全兼容

> :warning: 优化建议:在 orders.created_at 上创建索引

## 6. Skill 链接

Skill 的完整 System Prompt 可直接复制使用。

## 7. 总结与思考

### 最满意的地方

1. **国产 OLAP 引擎支持**:Doris/StarRocks/SelectDB 这些市面上通用 AI 工具很少覆盖,但对国内数据从业者特别实用

2. **双模式输出**:SQL + Pandas 同时给出,业务和技术团队都能用

3. **输出格式规范**:用 Markdown 分块,代码高亮,复制即可用

### 后续还想怎么优化

- 增加 **执行计划可视化** 功能

- 支持 **HiveQL****Spark SQL** 的转换

- 添加 **数据血缘分析** 功能

- 支持更多国产数据库(如 TiDB、OceanBase)

### 希望给你的建议

1. 先用对话示例测试效果

2. 有具体的业务场景可以分享给我,我会持续优化

3. 如果遇到转换不准确的 SQL,欢迎提供测试用例,我会调整知识库!

-–

**感谢观看!如果对你有帮助,欢迎点赞收藏,有问题也可以在评论区交流~**