掌桥专利:专业的专利平台
掌桥专利
首页

一种数据自动化同步的配置方法

文献发布时间:2023-06-19 13:45:04



技术领域

本发明涉及数据自动化处理技术领域,是一种数据自动化同步的配置方法,具体为一种后台shell脚本文件和kettle结合实现海量数据实现自动化比对处理的配置方法。特别适用于格式为.vbs或.batshell的脚本数据文件。

背景技术

现有技术数据同步技术,接口调用数据抽取数据量大抽取时耗时严重,文件对接数据传输不安全、工作量大等。

目前采用数据比对方法,1、行业部门之间数据同步使用人工核查数据更新时间、核查数据量进行相对应比较、在次过程中人员协调困难、数据更新较慢;2、接口调用更新比对、解决了数据更新的时效性、但在此过程中数据只能单独验证单条传输、数据传输较慢、耗时严重。

本发明采用的是kettle结合java、shell脚本以及sql文件比对判断;相比于人工核查比对,解决了数据更新不及时、以及工作量大的问题;相比于接口调用在数据传输安全的基础上解决了单体调用耗时严重的问题。

发明内容

本发明取消人工参与、能安全及时有效的对接处理数据、实现两个及以上多个数据库之间的数据自动共享问题,实现源数据和目标数据之间数据互通、业务独立的特性问题。

本发明通过如下技术方案实现:两个及以上数据库(Oracle、mysql等)之间,源数据库及目标数据库之间数据安全、快速的同步共享,数据定时自动处理成目标业务所需数据源。

一种数据自动化同步的配置方法,包括如下步骤:定时启动、实时监控、实时更新、实时比对更新数据、实现数据自动化同步配置;所述定时启动通过代码定时任务或ketlle定时任务、以2分钟时间为一个节点、定时调动shell脚本、同步查询目标数据库及源数据库数据表数据及最新时间判断目标数据是否是最新源数据,依据shell脚本判断结果返回数据更新状态;状态1结果为true,数据一致、不执行后续操作过程;状态2结果为false,数据不一致,则执行下一步操作过程;调用shell脚本进行数据同步,数据同步采用dmp格式文件传输或nb3文件传输同步操作、实现两数据库之间的数据同步操作;同步完成之后返回调用结果;

A、通过kettle本身的文件比对进行判断,只判断文件大小; B、shell脚本调用sql语句比对数据目标表的数据总量以及查询数据库表结构字段语句进行数据有效性验证,将同步数据结果返回;

上述步骤返回结果:验证成功、继续执行下一步操作数据自动比对处理;验证失败,数据结果有误,清除目标库中间表以及数据文件、返回继续执行数据抽取步骤;同时在上述每一步骤中加入短信提醒功能、调用kettle及代码组合方式、在整个过程每个流程执行过程中发现有报错执行不过以短信提醒的方式通知DBA及时处理。

自动化同步数据过程编写连接目标数据库以及源数据库的shell脚本、通过执行shell脚本导出源数据库数据以及表结构并导入将数据和表结构导入目标数据库;

通过kettle定时任务定时调用上述数据抽取脚本,通过脚本执行交源数据库数据同步到目标数据库。

通过shell脚本结合sql文件查询比对源数据库数据文件总数和目标数据库数据总数以及源数据库数据文件大小和目标数据库数据文件大小来判断数据量同步是否全量一致;通过kettle分别调用以上步骤进行数据比对以及数据有效新的验证操作实现数据自动化比对过程。

通过shell脚本结合数据库存储过程将同步的数据按照业务目标要求进行分类处理,将原有数据处理成业务需要的基础数据进行业务层使用;实现目标数据库与源数据库数据自动同步自动比对、将数据同步到目标前置库、通过kettle调用数据sql处理脚本将前置库数据同步处理到目标业务库。

进一步的,所述shell脚本实现两个及以上数据库之间数据同步共享任务,以shell(.bat)脚本能连接多个数据库的特性、将源数据库和目标数据库同时建立连接。

通过采用上述技术方案,实现源数据库与目标数据库之间数据结构与数据的互通,将目标业务所需数据所有来源数据表全部通过此过程自动共享至业务目标数据库。

进一步的,通过shell(.bat/.vbs)脚本调用sql文件,执行目标数据库及源数据库之间的比对sql,通过数据量判断业务所需数据表是否共享完全,目标数据库数据量及源数据库数据量完全一致时进而执行下一步操作,否则返回重新执行上一步操作。

进一步的,通过kettle能比对文件大小的特性结合shell脚本对数据读取的源文件以及目标文件大小进行有效比对、通过文件大小比对结果判定是否读取写入的数据文件完全一致,一致则进行下一步操作、不一致则返回上一步操作。

进一步的,完成以上数据互通及比对操作后、通过利用kettle调用数据存储过程及执行sql文件的特性,调用目标业务数据库存储过程实现业务数据数据源处理操作。

本发明相对于现有技术,具有以下有益效果:

1、自动化:实现数据同步的自动化、数据比对自动化、数据处理自动化,相较于传统的比对处理数据,主要在于解决人工成本、释放人力资源。

2、时效性:相较于传传统的比对处理数据方式、实现了数据及时有效地更新同步最新数据,是两个一级多个业务数据之间实现及时同步对接。

3、资源耗费小:相较于传统的数据同步处理方式、已最小的内存处理资源实现最大化疏忽巨量的及时更新同步能力。

综上所述,将源数据库和目标数据库通过kettle建立有效连接,并将源数据库数据以及表结构通过执行已经编译好的bat、vbs文件脚本以最快的速度、最小的时间同步到目标数据库,实现源数据库和目标数据库数据以及结构的共享;通过kettle本身可以执行sql语言以及shell脚本的特性,将数据处理脚本编译进shell脚本以及sql执行语句脚本中进行数据处理;通过kettle定时作业执行的特性编辑数据同步及处理定时任务,定时调用shell脚本发明处理数据进入目标业务库,将数据处理为业务需要的数据结构及表名称;通过定时执行各类脚本极大程度的缩减了人工参与成本、将数据比对处理工作实现自动化同步、自动化比对处理。

附图说明

图1是为本发明原理图;

图2是本发明工作流程图。

具体实施方式

一种数据自动化同步的配置方法,其特征在于包括如下步骤:定时启动、实时监控、实时更新、实时比对更新数据、实现数据自动化同步配置;所述定时启动通过代码定时任务或ketlle定时任务、以2分钟时间为一个节点、定时调动shell脚本、同步查询目标数据库及源数据库数据表数据及最新时间判断目标数据是否是最新源数据,依据shell脚本判断结果返回数据更新状态;状态1结果为true,数据一致、不执行后续操作过程;状态2结果为false,数据不一致,则执行下一步操作过程;调用shell脚本进行数据同步,数据同步采用dmp格式文件传输或nb3文件传输同步操作、实现两数据库之间的数据同步操作;同步完成之后返回调用结果;

择一选用如下方案:A、通过kettle本身的文件比对进行判断,只判断文件大小;B、shell脚本调用sql语句比对数据目标表的数据总量以及查询数据库表结构字段语句进行数据有效性验证,将同步数据结果返回;

上述步骤返回结果:验证成功、继续执行下一步操作数据自动比对处理;验证失败,数据结果有误,清除目标库中间表以及数据文件、返回继续执行数据抽取步骤;同时在上述每一步骤中加入短信提醒功能、调用kettle及代码组合方式、在整个过程每个流程执行过程中发现有报错执行不过以短信提醒的方式通知DBA及时处理。

自动化同步数据过程编写连接目标数据库以及源数据库的shell脚本、通过执行shell脚本导出源数据库数据以及表结构并导入将数据和表结构导入目标数据库;

通过kettle定时任务定时调用上述数据抽取脚本,通过脚本执行交源数据库数据同步到目标数据库。

通过shell脚本结合sql文件查询比对源数据库数据文件总数和目标数据库数据总数以及源数据库数据文件大小和目标数据库数据文件大小来判断数据量同步是否全量一致;通过kettle分别调用以上步骤进行数据比对以及数据有效新的验证操作实现数据自动化比对过程。

通过shell脚本结合数据库存储过程将同步的数据按照业务目标要求进行分类处理,将原有数据处理成业务需要的基础数据进行业务层使用;实现目标数据库与源数据库数据自动同步自动比对、将数据同步到目标前置库、通过kettle调用数据sql处理脚本将前置库数据同步处理到目标业务库。

如图1-图2所示,基于kettle、shell脚本、sql文件的数据自动化同步处理的配置方法,包括有如下步骤:

S1.基于业务数据需要,编写shell(.bat)脚本,同时连接源数据库与目标数据库,实现源数据库与目标数据库之间数据及结构互通,将目标业务所需数据所有来源数据表全部通过此过程自动共享至业务目标数据库。

S2.基于shell脚本可以调用sql文件的特性,编写源数据与目标数据库数据量比对的数据sql语言。通过运行该sql语言的结果进行比较、判断数据表的一致性,一致则进行下一步操作,不一致则结束以后操作返回上一步操作继续执行,在此过程中调用java程序发送预警信息。

S3.基于kettle能够比对文件大小特性,编辑JavaScript语言。通过该语言的运行判断比较数据读出写入的一致性以及完整性。一致则进行下一步操作,不一致则结束以后操作返回第一步重新执行,再次过程中同样要调用java程序发送预警信息。

S4.基于kettle能够执行存储过程以及sql语言的特性、开发编写数据处理存储过程,连接业务前置库以及业务数据库处理源数据生成业务所需最新数据。

使用时,一种基于kettle、shell脚本、sql文件的数据自动化同步处理的配置方法,定时启动、实时监控、实时更新、实时比对更新数据、实现数据自动化同步配置:其特征在于解决数据同步的时效性,通过代码定时任务或ketlle定时任务、以2分钟时间为一个节点、定时调动shell脚本、同步查询目标数据库及源数据库数据表数据结构及最新时间判断目标数据是否是最新源数据,依据shell脚本判断结果返回数据更新状态。状态1结果为true,数据一致、不执行后续操作过程;状态2结果为false,数据不一致,则执行下一步操作过程;调用shell脚本进行数据同步、数据同步采用最为有效的dmp格式文件传输、或者nb3文件传输同步操作、已达到能够快速实现两数据库之间的数据同步操作;同步完成之后返回调用结果,进入下一步操作、核查数据同步结构是否正确有效,(1)、通过kettle本身的文件比对进行判断,该方案只判断文件大小不能判断数据的有效性、对于数据量大、目标表过多的同步操作可以考虑悬在改操作方案;(2)、shell脚本调用sql语句比对数据目标表的数据总量以及查询数据库表结构字段语句的来完成数据有效性来验证;将同步数据结果返回。上述步骤返回的结果有两种,(1)验证成功、继续执行下一步操作数据自动比对处理,该过程为sql脚本执行是本领常规技术不在详述;(2)验证失败,数据结果有误,清除目标库中间表以及数据文件、返回继续执行数据抽取步骤。同时在上述每一步骤中加入短信提醒功能、调用kettle及代码组合方式、在整个过程每个流程执行过程中发现有报错执行不过去想象以短信提醒的方式通知DBA及时处理问题,此过程完全释放了人力实现全自动同步、比对、处理等过程。

自动化同步数据过程编写连接目标数据库以及源数据库的shell脚本、通过执行shell脚本导出源数据库数据以及表结构并导入将数据和表结构导入目标数据库。本案给出实际案例予以说明,如下案例仅为说明上述操作方法有效性,实际使用中可以根据实际数据库要求指定方案。

抽取数据表:

调用数据抽取脚本:aa11.bak

@echo off

cmd /c "echo aa11.dmp&&exp 源库/密码@地址:1521/orcl file=D:/cpad/%date:~,4%%date:~5,2%%date:~8,2%/aa11.dmp tables=(aa11) QUERY="^"\"where to_char(timestamp,'yyyymmddhh24miss')>%2 \"^"

cmd /c "echo aa11.dmp&&imp 目标中间库/密码@地址:1521/jzfpdb full=yfile=D:/cpad/%date:~,4%%date:~5,2%%date:~8,2%/aa11.dmp ignore=y"&&echo aa11>>ac01_log.txt

通过kettle定时任务定时调用上述数据抽取脚本aa11.bak,通过脚本执行交源数据库数据同步到目标数据库。

通过shell脚本结合sql文件查询比对源数据库数据文件总数和目标数据库数据总数以及源数据库数据文件大小和目标数据库数据文件大小来判断数据量同步是否全量一致。

数据自动比对:

@echo off

d:

cd \2015_bat-new\

:abc

for /f "delims=:" %%a in ('findstr /n "a" ac01_log.txt') do setlineno=%%a

echo %lineno%

echo 数据尚未抽取完成请耐心等待

if %lineno% == 41 (

echo 数据抽取完成

call jzfptimestamp.bat

exit

)

goto :abc

数据量核查sql:gfbtimestamp.Sql

源数据库:

set linesize 1000

set pagesize 0

set echo off

set termout off

set heading off

set feedback off

SET trims ON

set term off

SET trimspool ON

SET trimout ON

column today new_value today_file

select to_char(sysdate,'yyyymmdd') as today from dual;

spool D:\zddybat\gfb&&today_file..txt

select 1 ,'aa11 ',count(1) from aa11;

spool off;

目标中间库:

exit

set linesize 1000

set pagesize 0

set echo off

set termout off

set heading off

set feedback off

SET trims ON

set term off

SET trimspool ON

SET trimout ON

column today new_value today_file

select to_char(sysdate,'yyyymmdd') as today from dual;

spool D:\zddybat\jzfp&&today_file..txt

select 1 ,'aa11 ',count(1) from aa11;

spool off;

exit

数据比对

@echo off

echo 判断执行程序

ping /n 5 127.1>nul

For /f "tokens=*" %%i in ('more gfb%date:~,4%%date:~5,2%%date:~8,2%.txt') do (Findstr /c:"%%i" jzfp%date:~,4%%date:~5,2%%date:~8,2%.txt|| Echo%%i >>C.txt)

echo '============================'

echo 比较时间戳成功!

echo '============================'

ping /n 3 127.1>nul

call isCexists.bat

通过kettle分别调用以上步骤进行数据比对以及数据有效新的验证操作实现数据自动化比对过程。

通过shell脚本结合数据库存储过程将同步的数据按照业务目标要求进行分类处理,将原有数据处理成业务需要的基础数据进行业务层使用。

通过上述步骤实现目标数据库与源数据库数据自动同步自动比对、将数据同步到目标前置库、通过kettle调用数据sql处理脚本将前置库数据同步处理到目标业务库。

truncate table tbl_sys_area_code_bak ;

insert into tbl_sys_area_code_bak

(area_code, area_name, parent_area_code, short_name, area_level)

select aaa011,

aar009,

aaa113,

aar009,

case aar033

when '20' then

1

when '40' then

2

when '50' then

3

when '60' then

4

when '70' then

5

else

0

end

from henan_cpad.AA11_bak t ;

通过调用kettle任务执行上述sql语句处理数据完成。

相关技术
  • 一种数据自动化同步的配置方法
  • 一种同步自动化的智能DNS系统及配置方法
技术分类

06120113792707