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