# DataX 作业配置例子

本目录包含了使用 DataX 从 RESTful API 读取数据并写入 MySQL 数据库的作业配置示例。

## 例子说明

### 1. 产品数据同步 (`restful_to_mysql_products.json`)

从 Woocommerce API 获取产品数据，写入本地 MySQL 数据库的 `products` 表。

**主要配置项：**
- API URL: `https://your-woocommerce-site.com/wp-json/wc/v3/products`
- 认证方式: Basic Auth
- 分页方式: 基于页码的分页
- 写入表: `products`
- 写入模式: `replace` (替换现有数据)

### 2. 订单数据同步 (`restful_to_mysql_orders.json`)

从 Woocommerce API 获取订单数据，写入本地 MySQL 数据库的 `orders` 表。

**主要配置项：**
- API URL: `https://your-woocommerce-site.com/wp-json/wc/v3/orders`
- 认证方式: Basic Auth
- 分页方式: 基于页码的分页
- 写入表: `orders`
- 写入模式: `replace` (替换现有数据)

## 使用方法

### 1. 配置修改

在运行作业前，需要根据实际情况修改以下配置：

1. **API URL**: 将 `https://your-woocommerce-site.com` 替换为实际的 Woocommerce 站点 URL
2. **认证信息**: 更新 `Authorization` 头为实际的 Basic Auth 凭证
3. **数据库连接**: 根据实际情况调整数据库名称、表名等

### 2. 运行作业

在 DataX 容器中运行作业：

```bash
docker-compose exec datax python /datax/bin/datax.py /datax/job/restful_to_mysql_products.json
```

或

```bash
docker-compose exec datax python /datax/bin/datax.py /datax/job/restful_to_mysql_orders.json
```

### 3. 查看日志

作业日志会输出到容器的 `/datax/log` 目录，对应主机的 `./datax/log` 目录。

## 注意事项

1. **数据库表结构**: 请确保目标数据库中已创建相应的表结构，DataX 不会自动创建表
2. **API 权限**: 确保 Woocommerce API 已启用，并具有相应的读取权限
3. **分页配置**: 根据实际数据量调整 `pageSize` 和 `totalCount` 参数
4. **写入模式**: 支持 `insert` (插入)、`update` (更新)、`replace` (替换) 等模式
5. **数据类型**: 确保配置文件中的数据类型与数据库表结构匹配

## 表结构示例

### products 表

```sql
CREATE TABLE `products` (
  `id` bigint(20) NOT NULL PRIMARY KEY,
  `name` varchar(255) NOT NULL,
  `sku` varchar(255) DEFAULT NULL,
  `price` decimal(10,2) DEFAULT NULL,
  `stock_quantity` int(11) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```

### orders 表

```sql
CREATE TABLE `orders` (
  `id` bigint(20) NOT NULL PRIMARY KEY,
  `status` varchar(50) DEFAULT NULL,
  `total` decimal(10,2) DEFAULT NULL,
  `currency` varchar(10) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `customer_id` bigint(20) DEFAULT NULL,
  `billing_first_name` varchar(255) DEFAULT NULL,
  `billing_last_name` varchar(255) DEFAULT NULL,
  `billing_email` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```

## 扩展建议

1. **添加更多 API 端点**: 可以根据需要添加更多的 API 端点配置，如客户、分类等
2. **调整同步频率**: 结合 cron 任务实现定期同步
3. **增加数据转换**: 使用 DataX 的转换器功能对数据进行预处理
4. **添加错误处理**: 配置重试机制和错误告警
5. **监控作业状态**: 结合 Prometheus 和 Grafana 监控作业运行状态
