跳到主要内容

数据库管理与可视化工具完整调研报告 (2025版)

📋 快速导航


🖥️ GUI数据库管理工具

1. TablePlus ⭐⭐⭐⭐⭐

核心特点

  • 现代化UI: 原生界面,速度快
  • 多数据库支持: MySQL, PostgreSQL, SQLite, Redis, MongoDB, Cassandra等
  • 智能功能:
    • 自动补全
    • 语法高亮
    • 多标签页
    • 快速过滤
    • 内联编辑

支持的数据库

关系型:
- MySQL/MariaDB
- PostgreSQL
- SQLite
- SQL Server
- Oracle
- Redshift

NoSQL:
- MongoDB
- Redis
- Cassandra
- CockroachDB
- Elasticsearch

云数据库:
- Amazon RDS
- Google Cloud SQL
- Azure Database

实用功能

快捷键驱动:

⌘T         新建标签
⌘L 定位到搜索框
⌘E 执行SQL
⌘⇧E 执行选中SQL
⌘K 清空查询
⌘R 刷新
⌘F 表内搜索

智能过滤器:

-- 快速过滤语法
name = John -- 精确匹配
age \> 25 -- 数值比较
email ~ @gmail -- 模糊匹配
created \>= 2024 -- 日期比较
status != active -- 不等于

代码生成:

  • 生成Model类 (Ruby, PHP, Go)
  • 生成INSERT语句
  • 导出为CSV/JSON/SQL

连接管理:

# 支持SSH隧道
SSH Host: production-server.com
SSH User: deploy
SSH Key: ~/.ssh/id_rsa

# 数据库连接
Host: localhost (通过SSH)
Database: production_db

优势

✅ UI/UX一流,颜值高 ✅ 性能优秀,响应快 ✅ 多数据库统一体验 ✅ 内联编辑方便 ✅ 一次付费永久使用

劣势

❌ 免费版有连接数限制 ❌ 高级功能需付费 ❌ 不支持数据建模

适用场景

  • 日常数据库查询和管理
  • 多数据库环境切换
  • Mac/iOS开发者首选
  • 需要轻量快速的工具

2. DBeaver ⭐⭐⭐⭐⭐

核心特点

  • 开源免费: 社区版功能强大
  • 支持最全: 80+ 数据库
  • 功能最丰富:
    • SQL编辑器
    • ER图生成
    • 数据传输
    • Mock数据生成
    • 数据对比

独特功能

ER图自动生成:

右键数据库 → Generate Diagram → 选择表 → 自动生成ER图
支持导出为PNG/SVG/PDF

数据传输:

源数据库 → 选择表 → Export Data
目标: 另一个数据库/CSV/JSON/XML
支持数据转换和映射

Mock数据生成:

-- 右键表 → Generate SQL → Insert
配置:
- 行数: 10000
- name: 随机姓名
- email: 随机邮箱
- created_at: 日期范围

自动生成真实Mock数据

SQL格式化:

-- 选中SQL → 右键 → Format
支持多种格式化风格
支持自定义格式化规则

智能补全:

-- 输入 sel → 自动提示 SELECT
-- 输入表名 → 自动提示字段
-- 支持别名识别
-- 支持JOIN提示

高级功能(企业版)

  • NoSQL支持: MongoDB, Cassandra, Redis
  • 云数据库: AWS, Azure, Google Cloud
  • 数据对比: 结构和数据差异对比
  • 团队协作: 共享连接和脚本
  • Office集成: 导出到Excel保持格式

插件生态

常用插件:
- SQL Assistant: AI辅助SQL编写
- Git Integration: SQL脚本版本控制
- Office Integration: Excel导入导出增强
- ERD Designer: ER图设计器

配置示例

连接池配置:

Database → Connection → Connection settings
Max connections: 10
Connection timeout: 30s
Keep-alive interval: 60s

SQL模板:

-- Window → Preferences → SQL Editor → Templates

-- 新建模板: qry
SELECT ${column}
FROM ${table}
WHERE ${condition}
ORDER BY ${column} ${direction}
LIMIT ${limit};

优势

✅ 完全免费(社区版) ✅ 功能最全面 ✅ 支持数据库最多 ✅ ER图和数据建模 ✅ 跨平台一致体验 ✅ 开源可扩展

劣势

❌ 基于Eclipse,启动较慢 ❌ 内存占用较大 ❌ UI不如TablePlus现代

适用场景

  • 需要免费强大工具
  • 多种数据库混合环境
  • 需要ER图和建模
  • 数据迁移和对比
  • 企业级使用

3. DataGrip ⭐⭐⭐⭐⭐

核心特点

  • JetBrains品质: 与IntelliJ同样体验
  • 智能SQL编辑:
    • 上下文感知补全
    • 重构重命名
    • 代码分析
    • 导航跳转

独特功能

智能补全:

-- 自动识别上下文
SELECT u.| -- 自动提示users表的字段
FROM users u
JOIN orders o ON o.user_id = u.| -- 同样识别

-- 支持子查询补全
-- 支持CTE补全
-- 支持函数签名提示

重构功能:

-- 重命名字段(Shift+F6)
-- 自动更新所有引用

-- 提取子查询
SELECT * FROM (复杂查询)
→ 提取为View或CTE

-- 内联变量
-- 提取变量

本地历史:

每次查询都自动保存
Tools → Local History
查看所有执行过的SQL
回滚到任意版本

数据库对比:

工具 → 比较
- 比较两个数据库结构
- 生成迁移SQL
- 同步结构差异

版本控制集成:

与Git深度集成
- SQL文件版本控制
- Diff和Merge
- Blame和History
- 分支切换

快捷键(同IntelliJ)

⌘B         跳转到定义
⌘F12 文件结构
⌘⇧F 全局搜索
⌘E 最近文件
⌥↑/↓ 扩大/缩小选择
⌘⇧V 粘贴板历史
F2 下一个错误
⌥Enter 快速修复

代码检查

-- 实时检查:
- 未使用的表
- 重复的条件
- SQL注入风险
- 性能问题
- 命名规范

-- 支持自定义检查规则

优势

✅ IntelliJ级别体验 ✅ 智能重构和导航 ✅ 深度Git集成 ✅ 本地历史记录 ✅ 强大代码检查 ✅ 学生免费

劣势

❌ 价格较贵 ❌ 资源占用大 ❌ 学习曲线陡

适用场景

  • JetBrains全家桶用户
  • 需要重构和代码质量
  • 复杂SQL开发
  • 团队协作开发
  • 有预算的团队

4. Sequel Ace ⭐⭐⭐⭐

核心特点

  • Sequel Pro继任者: 开源免费
  • MySQL/MariaDB专用: 专精做好一件事
  • 原生Mac应用: 性能优秀

优势

✅ 完全免费开源 ✅ macOS原生体验 ✅ 轻量快速 ✅ MySQL最佳选择

劣势

❌ 仅支持MySQL/MariaDB ❌ 仅macOS平台 ❌ 功能相对简单

适用场景

  • macOS + MySQL环境
  • 需要免费轻量工具
  • 不需要多数据库支持

5. Beekeeper Studio ⭐⭐⭐⭐

核心特点

  • 开源现代: Electron构建
  • 简洁易用: 专注核心功能
  • 隐私优先: 无遥测无追踪

优势

✅ 开源免费 ✅ 界面现代简洁 ✅ 跨平台 ✅ 隐私友好 ✅ 快速启动

劣势

❌ 功能相对基础 ❌ Electron性能开销

适用场景

  • 需要简单快速工具
  • 注重隐私
  • 开源爱好者

💻 终端数据库工具

1. mycli ⭐⭐⭐⭐⭐

核心特点

  • MySQL/MariaDB终端客户端
  • 自动补全: 表名、字段、SQL关键字
  • 语法高亮: 彩色SQL
  • 智能提示: 上下文感知

安装使用

# 安装
pip install mycli
# 或
brew install mycli

# 连接
mycli -h localhost -u root -p password dbname

# 使用配置文件
mycli --myclirc ~/.myclirc

配置文件(~/.myclirc)

[main]
# 启用自动补全
auto_vertical_output = True
# 语法高亮风格
syntax_style = monokai
# 显示行号
line_numbers = True
# 多行模式
multi_line = True
# 历史记录
history_file = ~/.mycli-history

[colors]
Token.Menu.Completions.Completion.Current = bg:#00aaaa #000000
Token.Output.Header = bold #00ff00

特色功能

智能补全:

mysql\> SELECT * FROM u[TAB]
users user_logs user_sessions

mysql\> SELECT id, na[TAB]
name name_first name_last

mysql\> SELECT * FROM users WHERE st[TAB]
status state street

多行编辑:

mysql\> SELECT *
-\> FROM users
-\> WHERE id = 1\G -- \G 竖向显示

Favorite查询:

-- 保存常用查询
\fs show_users SELECT * FROM users LIMIT 10

-- 执行
\f show_users

自动垂直输出:

-- 当结果列太多时自动切换为垂直显示
-- 类似于 \G

优势

✅ 自动补全准确 ✅ 语法高亮美观 ✅ 配置灵活 ✅ 比mysql命令好用100倍

劣势

❌ 仅支持MySQL/MariaDB ❌ 需要Python环境


2. pgcli ⭐⭐⭐⭐⭐

核心特点

  • PostgreSQL终端客户端
  • 功能同mycli: 自动补全、语法高亮
  • PostgreSQL特性支持: Schema、Function等

安装使用

pip install pgcli
# 或
brew install pgcli

# 连接
pgcli postgresql://user:password@localhost:5432/dbname

# 简化连接
pgcli -h localhost -U postgres dbname

PostgreSQL特色

Schema感知补全:

postgres\> SELECT * FROM public.[TAB]
users orders products

postgres\> SELECT * FROM auth.[TAB]
users sessions tokens

函数签名提示:

postgres\> SELECT date_trunc([TAB]
date_trunc(text, timestamp)
date_trunc(text, interval)

配置文件(~/.config/pgcli/config):

[main]
multi_line = True
syntax_style = native
key_bindings = vi # vim模式

# 启用pager
enable_pager = True
pager = less -SRXF

# 时间格式
date_format = %Y-%m-%d
time_format = %H:%M:%S

优势

✅ PostgreSQL最佳终端工具 ✅ Schema感知智能 ✅ 支持psql所有功能


3. litecli ⭐⭐⭐⭐

SQLite终端客户端,功能同mycli/pgcli。

pip install litecli

litecli database.db

4. usql ⭐⭐⭐⭐⭐

核心特点

  • 通用SQL CLI: 一个工具连接所有数据库
  • 类似psql: 统一的命令和体验
  • 20+数据库支持

安装使用

brew install usql

# 连接不同数据库
usql postgres://user@localhost/dbname
usql mysql://user@localhost/dbname
usql sqlite:///path/to/db.sqlite
usql mongodb://localhost/dbname

支持的数据库

PostgreSQL, MySQL, SQLite, MSSQL, Oracle,
Cassandra, ClickHouse, CockroachDB, Firebird,
Ignite, MongoDB, Presto, SAP HANA, Snowflake,
Vertica, VoltDB, BigQuery, Spanner等

统一命令

-- 所有数据库统一使用psql风格命令
\d 列出表
\dt 列出表
\l 列出数据库
\c dbname 切换数据库
\q 退出
\? 帮助

优势

✅ 一个工具管理所有数据库 ✅ 统一的命令体验 ✅ 切换数据库无需记忆新命令

劣势

❌ 不如专用工具(mycli/pgcli)智能 ❌ 自动补全相对弱


🔄 数据库迁移工具

1. Flyway ⭐⭐⭐⭐⭐

核心特点

  • 版本化迁移: SQL文件版本管理
  • 简单可靠: 基于SQL脚本
  • 企业级: 被Netflix、Airbnb等使用

基础使用

目录结构:

project/
├── db/
│ └── migration/
│ ├── V1__Create_users_table.sql
│ ├── V2__Add_email_to_users.sql
│ ├── V3__Create_orders_table.sql
│ └── R__View_user_orders.sql # Repeatable

迁移脚本命名规则:

V{version}__{description}.sql
V1__Initial_setup.sql
V1.1__Add_index.sql
V2__Add_table.sql

R__{description}.sql # 可重复执行
R__Create_views.sql

示例迁移:

-- V1__Create_users_table.sql
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_users_email ON users(email);
-- V2__Add_email_verified.sql
ALTER TABLE users ADD COLUMN email_verified BOOLEAN DEFAULT FALSE;
UPDATE users SET email_verified = FALSE;

配置文件(flyway.conf)

flyway.url=jdbc:postgresql://localhost:5432/mydb
flyway.user=dbuser
flyway.password=secret
flyway.locations=filesystem:./db/migration
flyway.baseline-on-migrate=true
flyway.validate-on-migrate=true

CLI使用

# 安装
brew install flyway

# 查看状态
flyway info

# 执行迁移
flyway migrate

# 验证
flyway validate

# 清理(危险!)
flyway clean

# 修复
flyway repair

Java集成

// Spring Boot
@Configuration
public class FlywayConfig {
@Bean
public Flyway flyway(DataSource dataSource) {
return Flyway.configure()
.dataSource(dataSource)
.locations("classpath:db/migration")
.baselineOnMigrate(true)
.load();
}
}

// application.yml
spring:
flyway:
enabled: true
locations: classpath:db/migration
baseline-on-migrate: true

最佳实践

-- ✅ 好的迁移
-- 1. 向后兼容
ALTER TABLE users ADD COLUMN phone VARCHAR(20); -- 可选字段

-- 2. 先加后删
-- Step 1: 添加新字段
ALTER TABLE users ADD COLUMN full_name VARCHAR(100);
-- Step 2: 迁移数据
UPDATE users SET full_name = first_name || ' ' || last_name;
-- Step 3: (下个版本) 删除旧字段

-- 3. 使用事务
BEGIN;
-- 多个操作
ALTER TABLE ...;
UPDATE ...;
COMMIT;

-- ❌ 避免
-- 直接删除字段
ALTER TABLE users DROP COLUMN important_field; -- 危险!

-- 修改现有数据的类型
ALTER TABLE users ALTER COLUMN age TYPE VARCHAR; -- 可能失败

优势

✅ 简单易用,基于SQL ✅ 版本控制清晰 ✅ 社区活跃 ✅ 企业级稳定性 ✅ CI/CD集成友好

劣势

❌ 回滚需要手写 ❌ 高级功能需付费


2. Liquibase ⭐⭐⭐⭐⭐

核心特点

  • 数据库无关: 多数据库抽象
  • 多格式: XML, YAML, JSON, SQL
  • 回滚支持: 自动生成回滚SQL

Changelog格式

XML格式:

\<?xml version="1.0" encoding="UTF-8"?\>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.0.xsd"\>

\<changeSet id="1" author="alice"\>
\<createTable tableName="users"\>
\<column name="id" type="BIGINT" autoIncrement="true"\>
\<constraints primaryKey="true"/\>
</column\>
\<column name="username" type="VARCHAR(50)"\>
\<constraints nullable="false" unique="true"/\>
</column\>
\<column name="email" type="VARCHAR(100)"\>
\<constraints nullable="false"/\>
</column\>
</createTable\>
</changeSet\>

\<changeSet id="2" author="bob"\>
\<addColumn tableName="users"\>
\<column name="created_at" type="TIMESTAMP" defaultValueComputed="CURRENT_TIMESTAMP"/\>
</addColumn\>
</changeSet\>

\<changeSet id="3" author="alice"\>
\<createIndex tableName="users" indexName="idx_email"\>
\<column name="email"/\>
</createIndex\>
</changeSet\>
</databaseChangeLog\>

YAML格式(推荐):

databaseChangeLog:
- changeSet:
id: 1
author: alice
changes:
- createTable:
tableName: users
columns:
- column:
name: id
type: BIGINT
autoIncrement: true
constraints:
primaryKey: true
- column:
name: username
type: VARCHAR(50)
constraints:
nullable: false
unique: true
- column:
name: email
type: VARCHAR(100)
constraints:
nullable: false

- changeSet:
id: 2
author: bob
changes:
- addColumn:
tableName: users
columns:
- column:
name: phone
type: VARCHAR(20)

- changeSet:
id: 3
author: alice
changes:
- createIndex:
tableName: users
indexName: idx_email
columns:
- column:
name: email
rollback:
- dropIndex:
tableName: users
indexName: idx_email

SQL格式:

--liquibase formatted sql

--changeset alice:1
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) NOT NULL
);

--changeset bob:2
ALTER TABLE users ADD COLUMN created_at TIMESTAMP DEFAULT NOW();

--rollback ALTER TABLE users DROP COLUMN created_at;

CLI使用

# 安装
brew install liquibase

# 更新数据库
liquibase update

# 回滚最近1个变更
liquibase rollbackCount 1

# 回滚到特定标签
liquibase rollback version-1.0

# 生成SQL(不执行)
liquibase updateSQL

# 生成回滚SQL
liquibase rollbackSQL

# 查看状态
liquibase status

# Diff两个数据库
liquibase diff \
--referenceUrl=jdbc:mysql://localhost/db1 \
--url=jdbc:mysql://localhost/db2

配置文件(liquibase.properties)

changeLogFile=db/changelog/master.xml
url=jdbc:postgresql://localhost:5432/mydb
username=dbuser
password=secret
driver=org.postgresql.Driver
classpath=/path/to/postgresql.jar

Spring Boot集成

# application.yml
spring:
liquibase:
enabled: true
change-log: classpath:db/changelog/master.xml
drop-first: false
contexts: dev,test

优势

✅ 数据库无关抽象 ✅ 自动回滚支持 ✅ 多格式选择 ✅ Diff和生成Changelog ✅ 条件执行(context/labels)

劣势

❌ XML配置繁琐 ❌ 学习曲线陡 ❌ 不如Flyway简单


3. Atlas ⭐⭐⭐⭐⭐

核心特点

  • 现代化: 2021年新工具
  • Schema as Code: HCL语法
  • 自动迁移生成: 对比schema差异

Schema定义(HCL)

# schema.hcl
table "users" {
schema = schema.public
column "id" {
type = bigserial
}
column "username" {
type = varchar(50)
null = false
}
column "email" {
type = varchar(100)
null = false
}
primary_key {
columns = [column.id]
}
index "idx_email" {
columns = [column.email]
}
}

table "posts" {
schema = schema.public
column "id" {
type = bigserial
}
column "user_id" {
type = bigint
}
column "title" {
type = varchar(200)
}
foreign_key "fk_user" {
columns = [column.user_id]
ref_columns = [table.users.column.id]
on_delete = CASCADE
}
}

使用流程

# 安装
brew install ariga/tap/atlas

# 检查schema差异
atlas schema diff \
--from "postgres://localhost/db?sslmode=disable" \
--to "file://schema.hcl"

# 应用schema
atlas schema apply \
--url "postgres://localhost/db?sslmode=disable" \
--to "file://schema.hcl"

# 生成迁移
atlas migrate diff create_users \
--dir "file://migrations" \
--to "file://schema.hcl" \
--dev-url "docker://postgres/15"

# 执行迁移
atlas migrate apply \
--url "postgres://localhost/db" \
--dir "file://migrations"

优势

✅ 现代化工具 ✅ Schema as Code ✅ 自动生成迁移 ✅ 可视化diff

劣势

❌ 相对较新 ❌ 社区较小


🔀 数据同步与ETL工具

1. Airbyte ⭐⭐⭐⭐⭐

核心特点

  • 开源ETL: 数据集成平台
  • 350+ Connectors: 数据源和目标
  • 低代码: Web UI配置

Connectors示例

数据源:

  • 数据库: PostgreSQL, MySQL, MongoDB, Redis
  • SaaS: Salesforce, HubSpot, Stripe, Shopify
  • 文件: S3, GCS, SFTP, Local
  • API: REST, GraphQL

目标:

  • 数据仓库: Snowflake, BigQuery, Redshift
  • 数据库: PostgreSQL, MySQL
  • 数据湖: S3, GCS
  • BI: Tableau, Looker

使用示例

Docker部署:

git clone https://github.com/airbytehq/airbyte.git
cd airbyte
./run-ab-platform.sh

# 访问 http://localhost:8000

配置同步:

1. 添加Source (PostgreSQL)
Host: localhost
Port: 5432
Database: source_db

2. 添加Destination (BigQuery)
Project ID: my-project
Dataset: my_dataset

3. 创建Connection
- 选择要同步的表
- 配置同步频率 (每小时/每天)
- 选择同步模式:
* Full Refresh: 全量
* Incremental: 增量
* CDC: 变更捕获

4. 运行同步

同步模式

Full Refresh - Overwrite:
清空目标表,完全替换

Full Refresh - Append:
保留目标数据,追加新数据

Incremental - Append:
只同步新增数据

Incremental - Deduped History:
增量同步 + 去重

优势

✅ 开源免费 ✅ Connector最多 ✅ Web UI易用 ✅ 增量同步高效

劣势

❌ 部署复杂 ❌ 资源占用大


2. DataX ⭐⭐⭐⭐

核心特点

  • 离线数据同步: 批量ETL
  • 异构数据源: 20+支持
  • 高性能: 单机3GB/s+

支持数据源

Reader:
MySQL, PostgreSQL, Oracle, SQL Server,
MongoDB, HBase, HDFS, Hive, Elasticsearch,
Redis, FTP, OSS

Writer:
同Reader,支持双向同步

配置示例

MySQL到PostgreSQL:

{
"job": {
"content": [{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "password",
"connection": [{
"jdbcUrl": ["jdbc:mysql://localhost:3306/source_db"],
"querySql": ["SELECT id, name, email FROM users WHERE id \> 1000"]
}]
}
},
"writer": {
"name": "postgresqlwriter",
"parameter": {
"username": "postgres",
"password": "password",
"connection": [{
"jdbcUrl": "jdbc:postgresql://localhost:5432/target_db",
"table": ["users"]
}],
"column": ["id", "name", "email"],
"preSql": ["DELETE FROM users WHERE id \> 1000"],
"postSql": ["CREATE INDEX IF NOT EXISTS idx_name ON users(name)"]
}
}
}],
"setting": {
"speed": {
"channel": 5,
"byte": 1048576
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
}
}
}

运行

# 下载DataX
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
tar -xzf datax.tar.gz

# 执行同步
python datax/bin/datax.py job.json

# 性能测试
python datax/bin/datax.py job.json --jvm="-Xms1G -Xmx1G"

优势

✅ 性能极高 ✅ 阿里生产验证 ✅ 配置灵活 ✅ 完全开源

劣势

❌ 仅批量同步 ❌ 无Web UI ❌ 文档中文


📊 ER图设计工具

1. dbdiagram.io ⭐⭐⭐⭐⭐

核心特点

  • 纯文本定义: DBML语法
  • 实时预览: 边写边看
  • 导出SQL: 多数据库DDL
  • 团队协作: 分享和评论

DBML语法

// 表定义
Table users {
id bigint [pk, increment]
username varchar(50) [not null, unique]
email varchar(100) [not null]
password_hash varchar(255) [not null]
created_at timestamp [default: `now()`]
updated_at timestamp

Indexes {
email [unique]
(username, email) [name: 'idx_user_identity']
}
}

Table posts {
id bigint [pk, increment]
user_id bigint [not null, ref: \> users.id]
title varchar(200) [not null]
content text
status varchar(20) [default: 'draft']
published_at timestamp
created_at timestamp [default: `now()`]

Indexes {
user_id
status
published_at
}
}

Table comments {
id bigint [pk, increment]
post_id bigint [not null, ref: \> posts.id]
user_id bigint [not null, ref: \> users.id]
content text [not null]
created_at timestamp [default: `now()`]
}

Table post_tags {
post_id bigint [ref: \> posts.id]
tag_id bigint [ref: \> tags.id]

Indexes {
(post_id, tag_id) [pk]
}
}

Table tags {
id bigint [pk, increment]
name varchar(50) [not null, unique]
}

// 关系定义
Ref: posts.user_id \> users.id [delete: cascade]
Ref: comments.post_id \> posts.id [delete: cascade]
Ref: comments.user_id \> users.id

导出功能

- Export to SQL:
* PostgreSQL
* MySQL
* SQL Server
* SQLite

- Export to PDF/PNG

- Import from:
* SQL DDL
* Rails Schema
* Django Models

优势

✅ 纯文本,易版本控制 ✅ 快速高效 ✅ 导出多种格式 ✅ 免费够用

劣势

❌ 复杂图形能力有限 ❌ 在线工具,需网络


2. DrawDB ⭐⭐⭐⭐⭐

核心特点

  • 完全免费开源
  • 离线使用: PWA应用
  • 可视化拖拽: 图形化设计
  • 导出SQL: 多数据库

优势

✅ 完全免费开源 ✅ 可离线使用 ✅ 界面现代美观 ✅ 快速上手


3. DBeaver ER图

DBeaver内置ER图生成,之前已介绍。


📈 数据库监控工具

1. Prometheus + Grafana ⭐⭐⭐⭐⭐

Exporters

PostgreSQL:

# postgres_exporter
docker run -d \
-p 9187:9187 \
-e DATA_SOURCE_NAME="postgresql://user:password@localhost:5432/postgres?sslmode=disable" \
prometheuscommunity/postgres-exporter

MySQL:

# mysqld_exporter
docker run -d \
-p 9104:9104 \
-e DATA_SOURCE_NAME="user:password@(localhost:3306)/" \
prom/mysqld-exporter

Grafana仪表盘:

  • PostgreSQL Dashboard: ID 9628
  • MySQL Dashboard: ID 7362

2. PMM (Percona Monitoring) ⭐⭐⭐⭐

MySQL/PostgreSQL监控专家

docker run -d \
-p 443:443 \
--name pmm-server \
percona/pmm-server:2

# 添加MySQL监控
pmm-admin add mysql --username=root --password=secret

🛠️ SQL查询构建工具

1. Prisma Studio ⭐⭐⭐⭐⭐

核心特点

  • Prisma配套: ORM可视化
  • 图形化CRUD: 无需写SQL
  • 关系导航: 点击跳转关联数据
npm install -D prisma

# 启动Studio
npx prisma studio

2. Querybook ⭐⭐⭐⭐

SQL协作平台:

  • SQL编辑器
  • 查询历史
  • 团队共享
  • 数据文档

💾 备份与恢复工具

1. pg_dump / pg_restore

# 备份
pg_dump -h localhost -U postgres -Fc dbname \> backup.dump

# 恢复
pg_restore -h localhost -U postgres -d dbname backup.dump

# 备份为SQL
pg_dump -h localhost -U postgres dbname \> backup.sql

2. mysqldump

# 备份
mysqldump -u root -p dbname \> backup.sql

# 备份压缩
mysqldump -u root -p dbname | gzip \> backup.sql.gz

# 恢复
mysql -u root -p dbname < backup.sql

3. Percona XtraBackup ⭐⭐⭐⭐⭐

MySQL热备份工具:

# 全量备份
xtrabackup --backup --target-dir=/backup/full

# 增量备份
xtrabackup --backup --target-dir=/backup/inc1 \
--incremental-basedir=/backup/full

# 恢复
xtrabackup --prepare --target-dir=/backup/full
xtrabackup --copy-back --target-dir=/backup/full

📊 工具对比

GUI工具对比

工具价格数据库支持平台特色
TablePlus$89一次15+Mac/Win/Linux颜值高,速度快
DBeaver免费80+全平台功能最全,开源
DataGrip$99/年主流全支持全平台智能重构
Sequel Ace免费MySQLmacOS轻量专精
Beekeeper免费10+全平台简洁开源

终端工具对比

工具数据库特色
mycliMySQL自动补全,语法高亮
pgcliPostgreSQLSchema感知
litecliSQLite轻量快速
usql20+统一体验

迁移工具对比

工具格式回滚特色
FlywaySQL手动简单可靠
LiquibaseXML/YAML/SQL自动数据库无关
AtlasHCL自动现代化,Schema as Code

🎯 选型建议

根据使用场景

个人开发者

GUI: TablePlus (Mac) / DBeaver (全平台)
终端: mycli / pgcli
迁移: Flyway
ER图: dbdiagram.io
备份: 原生工具

小团队(5-10人)

GUI: TablePlus团队版 / DBeaver
终端: pgcli / usql
迁移: Flyway
同步: Airbyte开源版
ER图: DrawDB
监控: Prometheus + Grafana

中大型团队(10+人)

GUI: DataGrip企业授权
终端: usql统一
迁移: Liquibase
同步: Airbyte云版
ER图: DBeaver + dbdiagram.io
监控: PMM / Prometheus
备份: Percona XtraBackup
查询平台: Querybook

根据数据库

PostgreSQL

GUI: TablePlus / DataGrip
终端: pgcli ⭐
迁移: Flyway / Atlas
监控: postgres_exporter + Grafana
备份: pg_dump / pgBackRest

MySQL

GUI: TablePlus / Sequel Ace
终端: mycli ⭐
迁移: Flyway
监控: PMM ⭐
备份: Percona XtraBackup ⭐

MongoDB

GUI: TablePlus / MongoDB Compass
终端: mongosh + mongocli
迁移: migrate-mongo
备份: mongodump

SQLite

GUI: TablePlus / DB Browser
终端: litecli
备份: 文件拷贝

根据预算

零预算

DBeaver (全能)
mycli/pgcli (终端)
Flyway (迁移)
DrawDB (ER图)
Airbyte开源 (同步)

小预算($100-500/年)

TablePlus ($89一次)
Flyway ($200/年)
+ 开源工具组合

充足预算

DataGrip团队版
Liquibase企业版
Airbyte云版
PMM Enterprise
全套商业工具

📝 最佳实践

1. 数据库版本控制

- 使用Flyway/Liquibase管理Schema
- 迁移脚本纳入Git
- 向后兼容原则
- 分步骤迁移数据

2. 备份策略

- 全量备份(每天)
- 增量备份(每小时)
- 异地备份
- 定期恢复演练

3. 监控指标

- QPS/TPS
- 慢查询
- 连接数
- 缓存命中率
- 磁盘I/O
- 复制延迟

4. 安全

- 最小权限原则
- SSH隧道连接生产
- 敏感数据脱敏
- 审计日志

最后更新: 2025年1月 工具数量: 30+ 重点推荐: TablePlus、DBeaver、pgcli、Flyway、Airbyte、dbdiagram.io