# 示例数据说明 本项目在启动时会自动初始化MySQL和Oracle数据库的示例数据,方便用户测试和体验API功能。 ## 配置说明 ### 环境变量配置 1. 复制 `.env.example` 文件为 `.env` 2. 根据你的数据库环境修改相应的配置 3. 设置 `ENABLE_SAMPLE_DATA=true` 启用示例数据初始化 ### 默认配置 如果没有设置环境变量,系统将使用以下默认配置: - **MySQL**: localhost:3306, 用户名: root, 密码: password, 数据库: test_db - **Oracle**: localhost:1521, 用户名: system, 密码: password, 服务名: XE ## MySQL 示例数据 ### 1. users 表(用户信息表) | 字段名 | 类型 | 说明 | 示例数据 | |--------|------|------|----------| | id | INT | 用户ID(主键,自增) | 1, 2, 3... | | name | VARCHAR(100) | 用户姓名 | 张三, 李四, 王五... | | email | VARCHAR(150) | 邮箱地址(唯一) | zhangsan@example.com | | age | INT | 年龄 | 25, 30, 28... | | created_at | TIMESTAMP | 创建时间 | 当前时间 | | updated_at | TIMESTAMP | 更新时间 | 当前时间 | **示例记录:** - 张三, zhangsan@example.com, 25岁 - 李四, lisi@example.com, 30岁 - 王五, wangwu@example.com, 28岁 - 赵六, zhaoliu@example.com, 35岁 - 钱七, qianqi@example.com, 22岁 ### 2. products 表(产品信息表) | 字段名 | 类型 | 说明 | 示例数据 | |--------|------|------|----------| | id | INT | 产品ID(主键,自增) | 1, 2, 3... | | name | VARCHAR(200) | 产品名称 | 苹果手机, 笔记本电脑... | | price | DECIMAL(10,2) | 价格 | 5999.00, 8999.00... | | category | VARCHAR(100) | 分类 | 电子产品, 生活用品 | | description | TEXT | 产品描述 | 最新款智能手机... | | stock_quantity | INT | 库存数量 | 50, 30, 100... | | created_at | TIMESTAMP | 创建时间 | 当前时间 | **示例记录:** - 苹果手机, ¥5999.00, 电子产品, 库存50 - 笔记本电脑, ¥8999.00, 电子产品, 库存30 - 无线耳机, ¥299.00, 电子产品, 库存100 - 咖啡杯, ¥39.90, 生活用品, 库存200 - 书包, ¥129.00, 生活用品, 库存80 ## Oracle 示例数据 ### 1. departments 表(部门信息表) | 字段名 | 类型 | 说明 | 示例数据 | |--------|------|------|----------| | department_id | NUMBER | 部门ID(主键) | 1, 2, 3... | | department_name | VARCHAR2(100) | 部门名称 | 人力资源部, 技术部... | | manager_id | NUMBER | 经理ID | NULL(暂未设置) | | location_id | NUMBER | 位置ID | 1700, 1800, 1900 | **示例记录:** - 人力资源部, 位置ID: 1700 - 技术部, 位置ID: 1800 - 销售部, 位置ID: 1900 ### 2. employees 表(员工信息表) | 字段名 | 类型 | 说明 | 示例数据 | |--------|------|------|----------| | employee_id | NUMBER | 员工ID(主键) | 1, 2, 3... | | first_name | VARCHAR2(50) | 名 | 三, 四, 五 | | last_name | VARCHAR2(50) | 姓 | 张, 李, 王 | | email | VARCHAR2(100) | 邮箱地址(唯一) | zhang.san@company.com | | phone_number | VARCHAR2(20) | 电话号码 | 13800138001 | | hire_date | DATE | 入职日期 | 当前日期 | | job_id | VARCHAR2(10) | 职位ID | IT_PROG, SA_REP, HR_REP | | salary | NUMBER(8,2) | 薪资 | 8000, 6000, 5500 | | department_id | NUMBER | 部门ID | 1, 2, 3 | **示例记录:** - 张三, zhang.san@company.com, IT程序员, 技术部, ¥8000 - 李四, li.si@company.com, 销售代表, 销售部, ¥6000 - 王五, wang.wu@company.com, 人事代表, 人力资源部, ¥5500 ### 序列(Sequences) - `emp_seq`: 员工ID序列,从1开始递增 - `dept_seq`: 部门ID序列,从1开始递增 ## API 测试建议 ### 1. 连接数据库 ```bash # 连接MySQL POST /api/v1/connections { "db_type": "mysql", "host": "localhost", "port": 3306, "username": "root", "password": "password", "database": "test_db" } # 连接Oracle POST /api/v1/connections { "db_type": "oracle", "host": "localhost", "port": 1521, "username": "system", "password": "password", "database": "XE" } ``` ### 2. 查询示例数据 ```bash # 查询MySQL用户数据 POST /api/v1/query { "connection_id": "your_mysql_connection_id", "sql": "SELECT * FROM users LIMIT 10" } # 查询Oracle员工数据 POST /api/v1/query { "connection_id": "your_oracle_connection_id", "sql": "SELECT * FROM employees WHERE ROWNUM <= 10" } ``` ### 3. 获取表信息 ```bash # 获取MySQL数据库表列表 GET /api/v1/databases/{connection_id}/tables # 获取Oracle表结构 GET /api/v1/tables/{connection_id}/employees/columns ``` ## 注意事项 1. **数据库权限**: 确保配置的数据库用户具有创建表、插入数据的权限 2. **数据库连接**: 确保数据库服务正在运行且可以连接 3. **重复初始化**: 示例数据使用 `INSERT IGNORE`(MySQL)避免重复插入 4. **Oracle序列**: Oracle示例数据会先删除已存在的表和序列,然后重新创建 5. **禁用示例数据**: 设置环境变量 `ENABLE_SAMPLE_DATA=false` 可以禁用示例数据初始化 ## 故障排除 如果示例数据初始化失败,请检查: 1. 数据库服务是否正常运行 2. 连接参数是否正确 3. 数据库用户是否有足够的权限 4. 网络连接是否正常 5. 查看应用日志获取详细错误信息 初始化失败不会影响服务启动,你仍然可以手动创建数据库连接和数据。