每天从系统导出 Excel、改格式、再导进数据库——一个人一天两小时,一年就是 500 小时。用脚本把这段路自动化:凌晨自动跑、失败自动告警,数据准时可用还可回溯。这篇给你完整闭环。
一、先想清楚:这个搬运要不要自动化
不是所有 Excel 导入都值得写脚本。三个条件都满足再动手:
- 频率高:每周至少一次以上,天天做最值得
- 格式稳定:Excel 的表头、列序基本不变(变了脚本要改)
- 规则明确:怎么清洗、哪些字段入库、重复数据怎么处理,都能说清楚
偶尔一次、格式天天变的,手工做反而省事。
二、脚本设计:读、洗、写三步
一个数据搬运脚本就三件事:
- 读:用 pandas 读 Excel,读之前先校验文件在不在、是不是空表、表头对不对,文件异常直接报错退出,别硬着头皮往下跑
- 洗:类型转换(金额字符串转数字)、去重、空值处理、日期格式统一。清洗规则写清楚,这是最容易出错也最容易被忽略的一步
- 写:入库用 upsert(存在就更新、不存在就插入),按业务主键判断,保证重跑不产生重复数据
脚本要能重跑。同一个文件跑两遍,结果应该一样。用 upsert 而不是单纯 insert,是数据搬运的第一原则。
三、定时调度:让机器半夜干活
- Windows:任务计划程序,每天 02:00 跑脚本,设失败重试 2 次
- Linux:crontab 一行搞定,如 0 2 * * * python3 sync.py
时间选凌晨业务低谷,避免影响线上库。定时要按脚本时长留足余量,必要时加进程锁,防止两次任务抢文件。
四、失败告警:别让脏数据悄悄进库
数据搬运最怕的,是悄悄失败——脏数据在库里待一个月,后面所有报表全错。
三件套必须有:
- 日志:每次运行写日志——几点跑的、读了几行、插入几条、更新几条、报错在哪一行
- 告警:失败时发企业微信机器人或邮件,内容带错误摘要,手机上就能看到
- 对账:每天上班第一件事,看汇总数(今天订单 1234 条)对不对,或者让脚本自动比对源文件和库里的总行数
五、落地清单:从零到跑起来
- 写脚本:读 → 洗 → upsert 入库,本机先手工跑通一遍
- 加日志和告警:失败发企微/邮件
- 配定时:每天凌晨 02:00,重试 2 次
- 连跑一周,每天核对汇总数确认稳定
- 写交接文档:脚本在哪、怎么重跑、Excel 格式变了找谁改
这套做下来,每天省两小时,数据链路还可回溯——对不上账,翻日志就知道哪一步出的问题。
常见问题
Q: Excel 数据导入数据库,自己写脚本还是买工具?
A: 数据量不大、每周一两次、格式稳定,自己写 Python 脚本足够,半小时搞定。要复杂清洗、多数据源、可视化调度,再考虑 Kettle、DataX。别一上来就上重工具。
Q: 定时同步用什么调度?
A: Windows 用计划任务,Linux 用 cron,建议凌晨业务低谷跑(如 02:00)。定时要按脚本时长留足余量,避免上次没跑完下次又启动撞一起。
Q: 同步失败怎么及时发现?
A: 脚本写日志(成功几条、失败几条、报错行);失败发告警(邮件或企微机器人);次日人工核对汇总数。最怕悄悄失败,没人发现就一直是脏数据。
想要一套自动跑、能告警的数据同步?
数据搬运自动化 · 定时调度 · 失败告警 · 全程日志可回溯
立即免费咨询