夜雨聆风学习资料网

ARTICLE · 1025144

卸载 Navicat,阿里又开源了一款数据库神器,太炸了

卸载 Navicat,阿里又开源了一款数据库神器,太炸了
一个数据库客户端,能让我动“换掉 Navicat”这个念头,光免费没用。

连库、查表、改数据,这些谁都能做。我更在意的是:SQL 写到一半能不能补全,看到一坨祖传 SQL 能不能快速看懂,临时查线上数据时,少写几个恶心的 JOIN。

Chat2DB 这东西,我装完之后第一反应就是:有点意思。

它最早从阿里的开源项目体系里出来,定位就是通用数据库客户端。MySQL、PostgreSQL、Oracle、SQL Server、ClickHouse、SQLite、Redis、MongoDB 这些都能接。现在的 Community 版本还把 SQL 工作台、数据编辑、导入导出、AI 助手、MCP 这些东西塞到了一起。

我没急着让它连生产库。

这种新客户端我一般都先拿本地脏数据折腾,权限再大也不给,省得哪天手滑给自己整活。

随手用 Python 造了个 SQLite:

import sqlite3
from pathlib import Path

db_file = Path("payment_debug.db")

records = [
    ("U1007""PAY_801"19900"FAIL"),
    ("U1007""PAY_802"19900"FAIL"),
    ("U2041""PAY_803"6800"SUCCESS"),
    ("U1007""PAY_804"19900"SUCCESS"),
]

with sqlite3.connect(db_file) as conn:
    conn.execute("""
        create table if not exists payment_record (
            id integer primary key autoincrement,
            user_id text not null,
            pay_no text not null,
            amount_cent integer not null,
            state text not null,
            created_at datetime default current_timestamp
        )
    """
)

    conn.executemany(
"""
        insert into payment_record(user_id, pay_no, amount_cent, state)
        values (?, ?, ?, ?)
        """
,
        records
    )

print(db_file.resolve())

然后 Chat2DB 直接连这个 SQLite 文件。

表、字段、数据先看一遍,基本操作没什么学习成本。真正让我觉得它和普通数据库客户端不太一样的,是右边那个 AI 助手。

比如我想查:

“找出失败支付超过一次的用户,并统计失败金额。”

以前脑子里已经开始 group byhaving 了。

现在可以先让它生成 SQL,再自己过一遍条件。

注意,是让它帮我写,不是让它替我执行

这两个概念差很多。

我最烦现在有些 AI 数据库工具,上来就是“自然语言操作数据库”,听着很猛,真到生产环境我反而不敢用。

AI 写错一条 SELECT,大不了查错。

写错一条 UPDATE 呢?

所以我的习惯一直没变:AI 可以生成,涉及 UPDATE、DELETE,必须自己看 where 条件。生产库最好再把账号权限卡死。

Chat2DB 还有个功能我挺喜欢:SQL 解释。

项目里经常能翻出这种玩意:

legacy_query = """
select user_id, count(*) as fail_count
from payment_record
where state = 'FAIL'
group by user_id
having count(*) > 1
order by fail_count desc
"""

SQL 不算复杂。

但你把场景换成二三十行、套几层子查询、再混几个窗口函数,接手的人看半天很正常。

直接让 AI 解释每一段在干什么,再对着表结构检查,比自己从括号第一层扒到最后一层省事不少。

还有 SQL 优化建议,我的态度倒没那么激动。

它可以给建议,但执行计划还是得自己看。

数据库优化这事,我一直不太信“把 SQL 扔给 AI,一键快十倍”这种玩法。索引有没有命中、扫描多少行、排序有没有落盘、数据分布怎么样,这些东西不看执行计划,光盯着 SQL 文本猜,容易把自己带沟里。

Chat2DB 真让我想替掉 Navicat 的地方,反而不是某一个功能特别炸。

而是查数据、改表、写 SQL、问 AI、导数据,全塞在一个窗口里了。

平时开发联调,这就够用了。

当前 Community 版本还支持自己配置 AI 模型,不是只能绑定某一家模型服务;同时还有 CLI、MCP 这些能力。对喜欢拿 Python 写脚本的人,这个方向我觉得比单纯做个漂亮 GUI 有意思得多。

比如数据库里查完一批异常支付,我经常还会顺手用 Python 再校验一次:

import sqlite3

with sqlite3.connect("payment_debug.db"as conn:
    bad_users = conn.execute(
"""
        select user_id, count(*) as cnt
        from payment_record
        where state = ?
        group by user_id
        having count(*) > ?
        """
,
        ("FAIL"1)
    ).fetchall()

for user_id, count in bad_users:
    print(f"{user_id}: 连续失败记录 {count} 条")

GUI 用来快速看,Python 用来批量处理。

这俩我一般不会二选一。

不过有个地方得单独提醒一下。

Chat2DB 早期版本用过 Apache 2.0,而现在 Community 5.3.0 及之后已经换成了项目自己的 source-available 许可证。个人、本组织内部使用没问题,但你要二次分发、白标、嵌入商业产品,别看见“开源”两个字就直接往公司项目里塞,先把 LICENSE 看完。

至于 Navicat 要不要真卸载?

我电脑上不会马上删。涉及一些用了很多年的操作习惯,我宁愿两个工具并存一阵子。

但如果只是日常开发、连 MySQL、查 PostgreSQL、改几条数据、看表结构、写 SQL,再顺手让 AI 帮我解释一下祖传语句,Chat2DB 已经完全值得占一个 Dock 位置了。

数据库客户端这个赛道,终于不是换个皮继续写 SQL 了。

相关学习资料

返回首页浏览学习资料