Files
dababase-etl-python/SAMPLE_DATA.md
2026-03-04 12:17:52 +08:00

173 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 示例数据说明
本项目在启动时会自动初始化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. 查看应用日志获取详细错误信息
初始化失败不会影响服务启动,你仍然可以手动创建数据库连接和数据。