【技术分享】外部文件同步到数据,都有哪些便捷的技术实现方式?老码告诉你。

1. 定时Python小程序

工作内容:

采用Python脚本编程,设置系统定时任务,每1小时(用户可指定,修改)执行一次。

脚本逻辑

a) 读取指定 FTP 服务器的 Excel 文件,并结构化至内存中。(ftp 文件名称或命名规则 需约定)。

b) 读取DB 指定数据源,并结构化至内存中。

c) 将 a、b 两个内存数据进行差异化比对,分别有三种情况:一是需新增数据,二是需修改数据 ,三是需删除数据。

d) 将比对出的差异化结果,按实际要求执行 新增、修改、删除 SQL 语句,更新至 业务数据库。

优势

开发周期短、平、快。根据文件所在FTP位置,读取内存与DB数据对比差异,再更新(新增、修改或删除)差异数据。

借助系统(Linux/Win均可)定时功能,设定脚本执行周期。

问题

定制化程度高,不支持外部数据格式发生异动。

多FTP/文件,支持开发工作较大。

异常情况、处理过程,人工难介入。

大数据量同步,对内存有一定要求。

2. Kettle + DataX 平台调度

工作内容:

使用Kettle工具,离线编写(拖拽)同步执行逻辑,配置到DataX平台,设置定时任务,如每1小时执行一次。

Kettle处理逻辑

a) 数据输入,FTP连接,读取Excel 表数据;

b) 表输入,获取业务数据库指定业务表数据;

c) 记录集连接;

d)将 b 处理数据集中包含,但 a 数据集不包含的结果记录过滤出,执行 删除;

e) 将 a 数据集包含,但b数据集不包含的结果记录过滤出,执行 插入/更新。

优势

开发周期短、平、快。由Kettle进行配置读取,对比DB数据差异,再更新(处理逻辑大致一致)。

支持扩展,多FTP/多文件。

支持大数据量同步。

异常情况、处理过程,人工可查看和介入(方便配置定时任务、启动、停止及操作日志)。

问题

不支持外部数据格式发生异动。

3. Java + XXL-Job 调度

工作内容:

使用 Java 开发,编码,交由 xxl-job 做任务调度,支持web端设置定时任务规则,启动、停止和人工执行同步任务。

Java 处理逻辑,与Python小程序处理逻辑一致。

优势

自定义开发,FTP读取文件,对比DB数据查询,再更新。

支持扩展,支持多FTP/多文件。

异常情况、处理过程,人工可查看和介入(方便配置定时任务、启动、停止及操作日志)。

部署和使用均方便。

问题

不支持外部数据格式发生异动。

4. 数据平台

工作内容:

平台配置化web页面,分别配置 Ftp连接源及业务数据库数据源,设置同步规则即可。

优势

自定义大多数异构数据源。

支持用户在线配置同步节点。

异常情况、处理过程,人工可查看和介入。

各类数据功能齐全。

问题

费用高