# text2sql **Repository Path**: tdfAndy/text2sql ## Basic Information - **Project Name**: text2sql - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-30 - **Last Updated**: 2025-12-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Text2SQL - 自然语言转SQL工具 一个基于LangChain4j的纯Java自然语言转SQL工具,支持DeepSeek、千问等主流大语言模型。前端使用原生HTML/JavaScript,所有功能集成在Spring Boot后端中,只需部署Java服务即可使用。 ## 功能特性 - ✅ 用户登录/注册 - ✅ 多数据库支持(MySQL、IoTDB) - ✅ 数据源配置管理 - ✅ 数据库表选择和表结构查看 - ✅ 自然语言转SQL(支持DeepSeek、千问等模型) - ✅ 根据数据库类型自动生成对应SQL语法 - ✅ 现代化Web界面(原生HTML/CSS/JS) - ✅ 单服务部署,无需前端构建 ## 技术栈 ### 后端 - Spring Boot 2.7.18 (JDK 1.8兼容) - LangChain4j 0.29.1 - Spring Data JPA - H2嵌入式数据库(无需外部数据库) - JWT认证 - Spring Security ### 前端 - 原生HTML5/CSS3/JavaScript - 无需构建工具,直接部署 ## 快速开始 ### 环境要求 - JDK 1.8+ - Maven 3.6+ **注意**:本工具使用H2嵌入式数据库,无需安装MySQL或其他外部数据库。数据自动存储在项目目录下的 `data` 文件夹中。 ### LLM配置 在 `backend/src/main/resources/application.yml` 中配置LLM API密钥: ```yaml llm: deepseek: api-key: ${DEEPSEEK_API_KEY:your-deepseek-api-key} qwen: api-key: ${QWEN_API_KEY:your-qwen-api-key} ``` **注意**:也可以通过Web界面的"配置大模型API"功能进行配置,支持多个API密钥管理。 ### 启动服务 ```bash cd backend mvn clean install mvn spring-boot:run ``` 服务将在 `http://localhost:8080` 启动,直接在浏览器访问即可使用。 ## 使用流程 1. **访问应用**:打开浏览器访问 `http://localhost:8080` 2. **注册/登录**:首次使用需要注册账号 3. **配置数据源**:在数据源管理页面添加数据源配置 - 选择数据库类型(MySQL或IoTDB) - 填写连接信息(IoTDB的数据库名可留空) - MySQL默认端口:3306,IoTDB默认端口:6667 4. **选择表**:在Text2SQL页面选择数据源和需要查询的表 - MySQL:选择数据库表 - IoTDB:选择设备路径(device path) 5. **输入自然语言**:输入自然语言查询 - MySQL示例:"查询所有用户的姓名和邮箱" - IoTDB示例:"查询最近1小时的所有传感器数据" 6. **生成SQL**:点击"生成SQL"按钮,系统将根据数据库类型自动生成对应的SQL语句 ## API接口 ### 认证接口 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/register` - 用户注册 ### 数据源接口 - `GET /api/datasource` - 获取用户数据源列表 - `POST /api/datasource` - 创建数据源 - `DELETE /api/datasource/{id}` - 删除数据源 ### 数据库接口 - `GET /api/database/{dataSourceId}/tables` - 获取表列表 - `GET /api/database/{dataSourceId}/tables/{tableName}` - 获取表结构信息 ### Text2SQL接口 - `POST /api/text2sql/convert` - 自然语言转SQL ## 项目结构 ``` text2Sql/ ├── backend/ # Spring Boot后端(包含前端静态资源) │ ├── src/ │ │ ├── main/ │ │ │ ├── java/com/text2sql/ │ │ │ │ ├── controller/ # 控制器 │ │ │ │ ├── service/ # 服务层 │ │ │ │ ├── repository/ # 数据访问层 │ │ │ │ ├── entity/ # 实体类 │ │ │ │ ├── dto/ # 数据传输对象 │ │ │ │ ├── config/ # 配置类 │ │ │ │ └── util/ # 工具类 │ │ │ └── resources/ │ │ │ ├── static/ # 前端静态资源 │ │ │ │ ├── index.html # 主页面 │ │ │ │ ├── css/ # 样式文件 │ │ │ │ └── js/ # JavaScript文件 │ │ │ └── application.yml │ │ └── test/ │ └── pom.xml └── README.md ``` ## 部署说明 ### 开发环境 ```bash mvn spring-boot:run ``` ### 生产环境 ```bash # 打包 mvn clean package # 运行jar包 java -jar target/text2sql-backend-1.0.0.jar ``` ### Docker部署(可选) ```dockerfile FROM openjdk:17-jdk-slim COPY target/text2sql-backend-1.0.0.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"] ``` ## 注意事项 1. 首次使用需要先注册用户账号 2. 配置数据源时确保MySQL连接信息正确 3. 需要配置LLM API密钥才能使用Text2SQL功能 4. DeepSeek和千问的API密钥需要到对应平台申请 5. 前端静态资源已集成在后端,无需单独部署 ## 许可证 MIT License