门店销售数据同步#
读取本地门店销售 CSV,批量写入 MySQL 并归档已处理文件的同步工具。中台数据库只能通过 JumpServer 访问且有导出量限制,本地库同时承担数据备份,供 Python / Power Query 调用。
- 项目仓库:https://e.coding.net/fuwenyue/tianlala/shop_sales_sync.git
- 下游使用:本地备份表被 多时段渠道同比分析、周边数据分析 读取
功能#
- 扫描
门店销售/待同步/下全部.csv,自动添加录入时间列 - 批量写入
Tianlala.ads_dbs_trade_shop_pay_channel_di(每批 500 行,追加写入) - 表不存在时自动建表;CSV 出现新列时自动补齐
- 写入成功后移动到
门店销售/已同步/归档;失败文件保留在待同步目录,可重复重跑
运行方式#
pip install pymysql pandas
# 1. CSV 放入 门店销售/待同步/
# 2. 确认 config.py 数据库配置
python main.py中台数据导出#
JumpServer 有导出量限制,逐月查询、导出后放入 门店销售/待同步/:
SELECT *
FROM ads_dbs_trade_shop_pay_channel_di
WHERE pt LIKE '202604%'月度校验#
分别在中台与本地按月查询,比较各月流水是否一致:
SELECT
SUBSTR(pt, 1, 6) AS month_pt,
SUM(amount) AS total_amount
FROM ads_dbs_trade_shop_pay_channel_di
WHERE pt >= '20250101'
GROUP BY SUBSTR(pt, 1, 6)
ORDER BY month_pt;2023–2024 历史数据#
历史数据取自中台旧表 ads_dbs_trade_shop_di,注意过滤全零记录:
SELECT
business_date AS pt,
stat_shop_id AS shop_id,
channel_name AS payment_channels,
order_count AS order_cnt,
total_amount AS amount,
pay_amount AS income,
discount_amount AS discount
FROM ads_dbs_trade_shop_di
WHERE business_date BETWEEN 20230101 AND 20241231
AND NOT (order_count = 0 AND total_amount = 0 AND pay_amount = 0 AND discount_amount = 0);注意事项#
注意
中台会刷新前一个月的数据,同步前先删除上个月数据再重新同步;一年前的历史数据也会偶尔轻微变动,与本地保存值可能相差几块钱。
目标表结构参见数据字典 ads_dbs_trade_shop_pay_channel_di。