API-vendor/container/datax/job/README.md

103 lines
3.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.

# 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 监控作业运行状态