# MySQL CLI (Rust) > 💡 **快速开始**:运行 `mysql --help` 查看完整使用文档 一个轻量级的 Rust 语言 MySQL 命令行工具,兼容 MySQL 官方客户端用法,可以在未安装 MySQL 客户端的系统中执行 SQL 语句。 ## 功能特性 - ✅ **交互式模式**:支持完整的 REPL 交互式 Shell - ✅ **批量执行**:支持从 SQL 文件执行多条语句 - ✅ **多种输出格式**:支持表格、CSV、JSON、垂直格式 - ✅ **完整 SQL 支持**:支持 SELECT、INSERT、UPDATE、DELETE 等所有 SQL 语句 - ✅ **特殊命令**:支持 USE、SHOW、DESCRIBE、EXPLAIN 等 MySQL 命令 - ✅ **紧凑体积**:编译后仅 2.5MB,无需安装 MySQL 客户端 ## 编译 ```bash cargo build --release ``` ## 使用方法 ### 基本语法 ```bash ./mysql.exe -h -P -u -p -D -e "" ``` ### 参数说明 | 参数 | 说明 | 默认值 | |------|------|--------| | -h | MySQL 主机地址 | 127.0.0.1 | | -P | MySQL 端口 | 3306 | | -u | 用户名 | root | | -p | 密码 | (空) | | -D | 数据库名 | (空) | | -e | 要执行的 SQL 语句 | (可选) | | -f | 从 SQL 文件执行 | (可选) | | -F | 输出格式:table, csv, json, vertical | table | | -o | 输出到文件 | stdout | | -i | 强制进入交互模式 | (可选) | **注意**:不指定 `-e` 或 `-f` 时,需要使用 `-i` 参数进入交互模式 ### 使用示例 #### 1. 交互式模式 进入交互式 Shell: ```bash # 基本连接并进入交互模式 mysql -p123456 -i # 指定主机和用户 mysql -h127.0.0.1 -uroot -p123456 -i ``` 交互式命令: - `use ` - 切换数据库 - `status` - 显示连接状态 - `source ` - 执行 SQL 文件 - `format ` - 设置输出格式(table, csv, json, vertical) - `output ` - 设置输出文件 - `exit / quit` - 退出程序 #### 2. 直接执行 SQL ```bash # 查询数据 mysql -h127.0.0.1 -uroot -p123456 -Dmydb -e "SELECT * FROM users LIMIT 10" # 显示表结构 mysql -p123456 -Dmydb -e "DESCRIBE users" # 显示所有数据库 mysql -p123456 -e "SHOW DATABASES" # 插入数据 mysql -p123456 -Dmydb -e "INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')" # 更新数据 mysql -p123456 -Dmydb -e "UPDATE users SET email='new@email.com' WHERE id=1" # 删除数据 mysql -p123456 -Dmydb -e "DELETE FROM users WHERE id=1" ``` #### 3. 从 SQL 文件执行 ```bash # 执行 SQL 文件 mysql -p123456 -f script.sql # 执行并输出到 CSV mysql -p123456 -f script.sql -F csv -o result.csv ``` #### 4. 不同输出格式 ```bash # CSV 格式 mysql -p123456 -e "SELECT * FROM users" -F csv # JSON 格式 mysql -p123456 -e "SELECT * FROM users" -F json # 垂直格式(适合字段较多的记录) mysql -p123456 -e "SELECT * FROM users" -F vertical ``` ## 项目结构 ``` mysql-cli/ ├── Cargo.toml # Rust 项目配置 ├── README.md # 项目文档 └── src/ ├── main.rs # 主程序入口 ├── config.rs # 配置管理 ├── db.rs # 数据库连接 ├── executor.rs # SQL 执行引擎 └── repl.rs # 交互式 REPL ``` ## 依赖 - Rust 1.70+ - mysql (25.x) - clap (4.x) - 命令行参数解析 - rustyline (14.x) - 交互式 REPL - serde / serde_json - JSON 序列化 - csv - CSV 输出 ## 与 Go 版本对比 | 功能 | Rust 版本 | Go 版本 | |------|-----------|---------| | 交互式模式 | ✅ | ✅ | | SQL 文件执行 | ✅ | ✅ | | 输出格式 | 表格/CSV/JSON/垂直 | 表格/CSV/JSON/垂直 | | 二进制大小 | ~2.5MB | ~7.3MB | | 内存占用 | 更低 | 较高 | ## License MIT