CN112764740B - 一种基于Shell的应用在系统间文件交互中的处理方法 - Google Patents

一种基于Shell的应用在系统间文件交互中的处理方法 Download PDF

Info

Publication number
CN112764740B
CN112764740B CN202110103485.7A CN202110103485A CN112764740B CN 112764740 B CN112764740 B CN 112764740B CN 202110103485 A CN202110103485 A CN 202110103485A CN 112764740 B CN112764740 B CN 112764740B
Authority
CN
China
Prior art keywords
data
file
files
source
data source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110103485.7A
Other languages
English (en)
Other versions
CN112764740A (zh
Inventor
廖继全
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Ronghe Youxin Technology Co ltd
Original Assignee
Beijing Ronghe Youxin Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Ronghe Youxin Technology Co ltd filed Critical Beijing Ronghe Youxin Technology Co ltd
Priority to CN202110103485.7A priority Critical patent/CN112764740B/zh
Publication of CN112764740A publication Critical patent/CN112764740A/zh
Application granted granted Critical
Publication of CN112764740B publication Critical patent/CN112764740B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于Shell的应用在系统间文件交互中的处理方法,包括步骤:(1)将与本系统相关的数据源的关键信息进行参数配置;(2)从数据库中获取数据源和数据文件参数,根据参数进行初始化处理;(3)通过FTP或SFTP命令按数据源信息自动创建文件传输连接,使用特征自动检索源路径,判断对应数据源的数据文件是否就绪;(4)在抓取数据文件后,根据OK中登记的源文件条数和获取的数据文件条数进行对比,确保获取到的数据文件完整;(5)利用sed命令对文件进行切割处理;(6)对已经切割后的子数据文件或符合设置要求的源数据文件进行并发处理;(7)对导入完成的数据进行统计,与获取的文件记录数进行对比,确保已经处理和导入的数据完整。

Description

一种基于Shell的应用在系统间文件交互中的处理方法
技术领域
本发明涉及一种文件交互处理,尤其是涉及一种基于Shell的应用在系统间文件交互中的处理方法。
背景技术
鉴于公司在金融软件项目的实施交付过程中,经常遇到所交付系统与客户现有其他系统的多对多的复杂交互场景,由于不同客户对系统的要求不同,不同客户的现有系统情况都不尽相同,系统间关系和技术规范也存在较多差异,在实际的实施工作中此部分工作常常占用实施团队较多的开发和实施时间,降低了实施效率,造成了人力、物力和财力的严重浪费。
发明内容
本发明提供了一种基于Shell的应用在系统间文件交互中的处理方法,解决了项目实施交付过程中的多数据源多文件(多数据源多文件,其中数据源是指提供数据源文件的系统,文件是指数据文件,多数据源多文件,即应用系统从多个系统中各自获取多个数据文件)的交互场景中的问题,其技术方案如下所述:
一种基于Shell的应用在系统间文件交互中的处理方法,所述系统需要兼容Linux系统,包括下列步骤:
S1:参数配置:将与本系统相关的数据源的关键信息进行参数配置,为所有数据源的IP、对接用户、数据路径、接入文件、接入频率、数据分割符提供参数化配置,同时设定工具(即,承载本文所述处理方法的shell脚本)的入参定义,支持JAVA或其他shell脚本程序调用时传入参数,也支持通过数据库自动获取参数;
S2:参数获取:从数据库中获取数据源和数据文件参数,并根据参数进行初始化处理;
S3:轮询识别:根据入参中的数据源IP地址、数据源用户名、数据源密码,通过FTP或SFTP命令按数据源信息自动创建文件传输连接,并使用文件名称或OK文件作为特征自动检索源路径,以判断对应数据源的数据文件是否已经准备就绪;
S4:数据校验:在抓取数据文件后,根据OK中登记的源文件条数和获取的数据文件条数进行对比,以确保获取到的数据文件完整;
S5:文件切割:利用sed命令对文件进行切割处理,将一个数据文件按文件大小切割成多个子数据文件;
S6:并发导入:对已经切割后的子数据文件或符合设置要求的源数据文件进行并发处理;
S7:结果验证:对导入完成的数据进行统计,与获取的文件记录数进行对比,确保已经处理和导入的数据完整。
进一步的,步骤S1中,所述关键信息包括数据源编号、数据源名称、交互方式、文件获取方式、数据源服务器地址、数据源服务器端口号、数据源服务器名称、数据源服务器密码、数据源服务器目录、OK文件类型、取数轮询间隔时间、本地接收路径、本地备份路径、本地数据库用户名、本地数据库密码、导入轮询间隔时间、数据分隔符,以及交互文件的相关参数。
步骤S1中,所述相关参数包括文件编码、文件名称、数据源编号、对应库表、文件周期、是否允许重复导入是否支持手工修改、是否批量依赖。
进一步的,步骤S3中,使用二进制传输的方式,通过mget命令批量抓取数据文件和OK文件,并放置到本地路径下。
进一步的,步骤S4中,循环处理每个数据文件,对比OK文件中登记的数据文件与抓取到的数据文件的大小和条数,相符则写入文件监控表中,不符则跳过,继续处理下个数据文件。
进一步的,步骤S5中,对于不符合设定的大数据文件的其他文件,直接发起导入,使用入参中的数据库用户名、数据库密码、数据库实例、表名参数,通过封装的sqlldr或loaddata命令将数据文件的内容导入到数据库的指定的表中。
进一步的,步骤S6中,并发导入为循环处理,使用ps命令获取操作系统中关于数据导入的进程数量,在设定的并发数量内,使用nohup发起导入指令,当脚本通过ps命令获取到的进程数量大于限定值时,通过sleep命令让脚本进行睡眠,然后,再进行下一轮处理,直到所有的子数据文件完成导入。
进一步的,步骤S7中,本方法对于初次接入的数据文件存在的错误数据,智能跳过错误数据并登记在册,优先完成正确数据的处理和入库处理,对错误数据的判断充分利用目标数据库自带的原生工具和容错机制,调整导入命令中的错误记录数参数errors,留存数据库反写的bad数据文件。
所述基于Shell的应用在系统间文件交互中的处理方法,设计上高参数化,自动化识别,高效高并发,完备容错机制,让实施团队在交付类似产品软件时,面对多源多文件的情境下,通过参数配置,替代个性化数据开发,并在技术实现中考虑到了大数据文件的切割和并发处理,极大的提高了交付效率和数据处理效能。
附图说明
图1是所述基于Shell的应用在系统间文件交互中的处理方法的流程示意图。
具体实施方式
本发明提供了一种基于Shell的应用在系统间文件交互中的处理方法,其中系统需要兼容Linux系统,这样在提供参数化配置并满足全自动或半自动的要求时,同时具备较高的适配性和移植性,能够满足不同项目对数据交互的落地要求,降低实施团队的实施成本和交付难度。
如图1所示,所述方法包括以下步骤:
S1:参数配置:将与本系统相关的数据源的关键信息进行参数配置,所述关键信息包括数据源编号、数据源名称、交互方式、文件获取方式、数据源服务器地址、数据源服务器端口号、数据源服务器名称、数据源服务器密码、数据源服务器目录、OK文件类型、取数轮询间隔时间、本地接收路径、本地备份路径、本地数据库用户名、本地数据库密码、导入轮询间隔时间、数据分隔符,以及交互文件的相关参数,所述相关参数包括文件编码、文件名称、数据源编号、对应库表、文件周期、是否允许重复导入是否支持手工修改、是否批量依赖。
通过参数配置,为所有数据源的IP、对接用户、数据路径、接入文件、接入频率、数据分割符等提供参数化配置,实现对多源多文件场景的“零写死”,其中,“数据源的IP”和“对接用户”是登录源系统获取文件的必备参数,“数据路径”是数据文件的存储位置,“接入文件”是数据文件的全名,“接入频率”是指每天、月末等交互频率,“数据分割符”是数据文件中用以分割不同字段的特殊符号,如’|’。
S2:参数获取:从数据库中获取数据源和数据文件参数,并根据参数进行一定的初始化处理,如自动创建目的路径。
通过读取参数实现对多数据源(即,多个不同的提供源数据的系统)的自动识别和连接,通过轮询机制自动检索并识别对应的目标文件,实现自动抓取、核对处理。
S3:轮询识别:通过FTP或SFTP命令按数据源信息自动创建文件传输连接,并使用文件名称或OK文件作为特征(OK文件,即与对应的数据文件名称一致且使用‘.OK’作为后缀的特殊数据文件,通常情况下,数据文件以‘.dat’作为后缀,OK文件常用以标识对应的数据文件已经写好)自动检索源路径,以判断对应数据源的数据文件是否已经准备就绪。程序自动判定数据文件已经准备就绪的情况下,以二进制传输方式,自动抓取数据文件到目标路径(即,参数配置中的“本地接收路径”,以便后续对数据文件进行读取和导入)下。
S4:数据校验:在抓取数据文件后,根据OK中登记的源文件(即,数据文件)条数和获取的数据文件条数进行对比,以确保获取到的数据文件是完整的。
S5:文件切割:利用sed命令对文件(即,抓取的数据文件)进行切割处理,将一个较大的数据文件按最优的文件大小切割成多个子数据文件。
S5:并发导入:对已经切割后的子数据文件或较小的源数据文件进行并发处理,在必要的情况下充分利用系统处理性能达到最佳处理效率。
S6:结果验证:对导入完成的数据进行统计,与获取的文件记录数进行对比,确保已经处理和导入的数据是完整的。
这样,对于较大数据文件进行识别和切割,以及多线程并发处理,能够有效提升数据读取和导入的效率。
本方法允许初次接入的数据文件存在错误数据,智能跳过错误数据并登记在册,优先完成正确数据的处理和入库处理,此处对错误数据的判断充分利用目标数据库(如oracle的sqlldr)自带的原生工具和容错机制,调整导入命令中的错误记录数参数errors,留存数据库反写的bad数据文件。
下面结合部分代码对本发明方法提供的具体实施例做进一步阐述。
1、参数配置需要设定工具(即,承载本文所述处理方法的shell脚本)的入参定义,支持JAVA或其他shell脚本程序调用时传入参数,也支持通过数据库自动获取参数:
#日期
SYS_DATE=$1
#FTP目标用户名
USER=$2
#FTP目标用户密码
PSWD=$3
#本地接收路径
RSV_PATH=$4
#目标接收路径
GET_PATH=$5
#数据源编号
SOURCE_NUM=$6
#FTP目标IP
SERVER=$7
LOCALPATH=`pwd`
此步骤,旨在定义对应的入参变量,以便后续程序使用,包括:日期、数据源用户名、数据源密码、本地路径、目标路径、数据源编号、数据源IP地址、数据库用户名、数据库密码、数据库实例等,参数的设定是脚本程序具备灵活性特点的基础。
2、参数获取通过自动连接数据源,并检索特征文件:
Figure BDA0002916478100000061
Figure BDA0002916478100000071
此步骤,是根据入参中的数据源IP地址、数据源用户名、数据源密码,通过FTP或SFTP的方式,登录数据源系统,访问目标路径,在目标路径下检索OK文件(即,特征文件)是否存在。
3、轮询识别通过批量抓取实现:
Figure BDA0002916478100000072
在判断到OK文件已经生成后,再次使用入参中的数据源IP地址、数据源用户名、数据源密码,通过FTP或SFTP的方式,登录数据源系统,访问目标路径,使用二进制传输的方式,通过mget命令批量抓取数据文件和OK文件,并放置到本地路径下。
4、数据校验:
Figure BDA0002916478100000081
本步骤,循环处理每个数据文件,对比OK文件中登记的数据文件与抓取到的数据文件的大小和条数,相符则写入文件监控表中,不符则跳过,继续处理下个数据文件。
5、文件切割与导入:
Figure BDA0002916478100000082
Figure BDA0002916478100000091
本步骤,通过数据文件的条数识别超过百万条的大数据文件,对大数据文件进行文件切割,此处支持参数化的切割数量,指定将大数据文件切割成多少个子数据文件;如果不是大数据文件(即,文件条数小于百万),那么直接发起导入,使用入参中的数据库用户名、数据库密码、数据库实例、表名等参数,通过封装的sqlldr或loaddata等命令将数据文件的内容导入到数据库的指定的表中。
splitfile.sh,文件切割脚本示例:
Figure BDA0002916478100000092
Figure BDA0002916478100000101
文件切割是对数据文件的进一步处理,旨在缩小数据文件的大小和条数,再结合多进程并发处理,提高数据导入的效率。此处脚本使用了入参中的文件名称、切割数量,通过sed命令对数据文件进行切割处理,通过nohup的方式实现多进程并发。
6、并发导入控制:
Figure BDA0002916478100000102
此处,是为循环处理,使用ps命令获取操作系统中关于数据导入的进程数量,在设定的并发数量内,使用nohup发起导入指令,当脚本通过ps命令获取到的进程数量大于限定值时,通过sleep命令让脚本进行睡眠,然后,再进行下一轮处理,直到所有的子数据文件完成导入。
7、结果验证:
Figure BDA0002916478100000111
Figure BDA0002916478100000121
此步骤,是对数据处理的最后一步核查,通过数据文件的条数和导入到数据库的表中的记录数量进行对比,来确认数据文件是否完整导入,并将核对结果写入到数据库中,以便后续其他程序(如,批量调度平台,这里的批量调度平台非本脚本功能范围)使用。
本发明通过对项目实施交付过程中的多数据源多文件的交互场景中所遇困难的共同点进行提炼和总结,利用shell脚本的高效性和灵活性,整合个性化的需求点,满足兼容性、可移植性、高参数化和高性能的要求,提高交付效率和数据交互效能。

Claims (6)

1.一种基于Shell的应用在系统间文件交互中的处理方法,所述系统需要兼容Linux系统,包括下列步骤:
S1:参数配置:将与所述系统相关的数据源的关键信息进行参数配置,为所有数据源的IP、对接用户、数据路径、接入文件、接入频率、数据分割符提供参数化配置,同时设定工具的入参定义,支持JAVA或其他shell脚本程序调用时传入参数,也支持通过数据库自动获取参数;
所述关键信息包括数据源编号、数据源名称、交互方式、文件获取方式、数据源服务器地址、数据源服务器端口号、数据源服务器名称、数据源服务器密码、数据源服务器目录、OK文件类型、取数轮询间隔时间、本地接收路径、本地备份路径、本地数据库用户名、本地数据库密码、导入轮询间隔时间、数据分隔符,以及交互文件的相关参数;
所述相关参数包括文件编码、文件名称、数据源编号、对应库表、文件周期、是否允许重复导入、是否支持手工修改、是否批量依赖;
S2:参数获取:从数据库中获取数据源和数据文件参数,并根据参数进行初始化处理;
S3:轮询识别:根据入参中的数据源IP地址、数据源用户名、数据源密码,通过FTP或SFTP命令按数据源信息自动创建文件传输连接,并使用文件名称或OK文件作为特征自动检索源路径,以判断对应数据源的数据文件是否已经准备就绪;
S4:数据校验:在抓取数据文件后,根据OK文件 中登记的源文件条数和获取的数据文件条数进行对比,以确保获取到的数据文件完整;
S5:文件切割:利用sed命令对文件进行切割处理,将一个数据文件按文件大小切割成多个子数据文件;
S6:并发导入:对已经切割后的子数据文件或符合设置要求的源数据文件进行并发处理;
S7:结果验证:对导入完成的数据进行统计,与获取的文件记录数进行对比,确保已经处理和导入的数据完整。
2.根据权利要求1所述的基于Shell的应用在系统间文件交互中的处理方法,其特征在于:步骤S3中,使用二进制传输的方式,通过mget命令批量抓取数据文件和OK文件,并放置到本地路径下。
3.根据权利要求1所述的基于Shell的应用在系统间文件交互中的处理方法,其特征在于:步骤S4中,循环处理每个数据文件,对比OK文件中登记的数据文件与抓取到的数据文件的大小和条数,相符则写入文件监控表中,不符则跳过,继续处理下个数据文件。
4.根据权利要求1所述的基于Shell的应用在系统间文件交互中的处理方法,其特征在于:步骤S5中,对于不符合进行切割处理的其他文件,直接发起导入,使用入参中的数据库用户名、数据库密码、数据库实例、表名参数,通过封装的sqlldr或loaddata命令将数据文件的内容导入到数据库的指定的表中。
5.根据权利要求1所述的基于Shell的应用在系统间文件交互中的处理方法,其特征在于:步骤S6中,并发导入为循环处理,使用ps命令获取操作系统中关于数据导入的进程数量,在设定的并发数量内,使用nohup发起导入指令,当脚本通过ps命令获取到的进程数量大于限定值时,通过sleep命令让脚本进行睡眠,然后,再进行下一轮处理,直到所有的子数据文件完成导入。
6.根据权利要求1所述的基于Shell的应用在系统间文件交互中的处理方法,其特征在于:步骤S7中,对于初次接入的数据文件存在的错误数据,智能跳过错误数据并登记在册,优先完成正确数据的处理和入库处理,对错误数据的判断充分利用目标数据库自带的原生工具和容错机制,调整导入命令中的错误记录数参数errors,留存数据库反写的bad数据文件。
CN202110103485.7A 2021-01-26 2021-01-26 一种基于Shell的应用在系统间文件交互中的处理方法 Active CN112764740B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110103485.7A CN112764740B (zh) 2021-01-26 2021-01-26 一种基于Shell的应用在系统间文件交互中的处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110103485.7A CN112764740B (zh) 2021-01-26 2021-01-26 一种基于Shell的应用在系统间文件交互中的处理方法

Publications (2)

Publication Number Publication Date
CN112764740A CN112764740A (zh) 2021-05-07
CN112764740B true CN112764740B (zh) 2022-06-10

Family

ID=75705744

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110103485.7A Active CN112764740B (zh) 2021-01-26 2021-01-26 一种基于Shell的应用在系统间文件交互中的处理方法

Country Status (1)

Country Link
CN (1) CN112764740B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375891A (zh) * 2011-11-15 2012-03-14 山东浪潮金融信息系统有限公司 一种增量数据卸载和装载的实施工具
WO2014094534A1 (zh) * 2012-12-21 2014-06-26 中国银联股份有限公司 一种基于文件字典拼装的文件开发工具装置以及方法
CN109241191A (zh) * 2018-09-13 2019-01-18 华东交通大学 一种分布式数据源异构同步平台及同步方法
CN111309315A (zh) * 2018-12-12 2020-06-19 中国科学院沈阳自动化研究所 一种基于工业物联网数据和业务建模的自动化配置方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107918516A (zh) * 2017-10-17 2018-04-17 广东广业开元科技有限公司 一种可视化动态配置生成图表的系统及方法
CN107844297B (zh) * 2017-10-17 2020-12-29 广东广业开元科技有限公司 一种数据可视化实现系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375891A (zh) * 2011-11-15 2012-03-14 山东浪潮金融信息系统有限公司 一种增量数据卸载和装载的实施工具
WO2014094534A1 (zh) * 2012-12-21 2014-06-26 中国银联股份有限公司 一种基于文件字典拼装的文件开发工具装置以及方法
CN109241191A (zh) * 2018-09-13 2019-01-18 华东交通大学 一种分布式数据源异构同步平台及同步方法
CN111309315A (zh) * 2018-12-12 2020-06-19 中国科学院沈阳自动化研究所 一种基于工业物联网数据和业务建模的自动化配置方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
程学旗等."大数据系统和分析技术综述".《软件学报》.2014,第25卷(第9期),第1889-1908页. *

Also Published As

Publication number Publication date
CN112764740A (zh) 2021-05-07

Similar Documents

Publication Publication Date Title
US8312150B2 (en) System and method for flexible data transfer
CN102129478B (zh) 数据库同步方法及系统
US7316015B2 (en) Method, apparatus, and program for constructing an execution environment, and computer readable medium recording program thereof
CN104809202A (zh) 一种数据库同步的方法和装置
CN110879813A (zh) 一种基于二进制日志解析的MySQL数据库增量同步实现方法
CN104809201A (zh) 一种数据库同步的方法和装置
CN105005618A (zh) 一种异构数据库之间的数据同步方法及系统
CN110737594B (zh) 自动生成测试用例的数据库标准符合性测试方法及装置
CN111737227B (zh) 数据修改方法及系统
CN111859076B (zh) 数据爬取方法、装置、计算机设备及计算机可读存储介质
CN107391112A (zh) 一种文件版本检测方法及其专用装置
CN110958292A (zh) 文件上传方法、电子装置、计算机设备及存储介质
CN108334675B (zh) 数字飞行器工况集批量仿真的人工智能处理方法及系统
US20020143794A1 (en) Method and system for converting data files from a first format to second format
CN116204438A (zh) 测试用例生成方法、自动化测试方法和相关装置
CN112328631A (zh) 一种生产故障分析方法、装置、电子设备及存储介质
CN1275160C (zh) 一种数据库备份方法
CN112084246B (zh) 财务软件信息的采集方法
CN112764740B (zh) 一种基于Shell的应用在系统间文件交互中的处理方法
CN102346757A (zh) Ims数据库联机交易中数据影印方法及系统
CN111611107A (zh) 获取数据库日志的方法及装置
CN113064943A (zh) 一种数据采集方法、装置、电子设备和存储介质
CN114546942B (zh) 一种数据库数据读取方法、装置、终端及存储介质
CN111694887B (zh) 一种数据适应性存储调度系统及方法
CN117632114B (zh) 一种基于文件分析的fmu文件的导入方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Processing Method for Shell Based Applications in File Interaction between Systems

Effective date of registration: 20231030

Granted publication date: 20220610

Pledgee: Beijing technology intellectual property financing Company limited by guarantee

Pledgor: BEIJING RONGHE YOUXIN TECHNOLOGY CO.,LTD.

Registration number: Y2023990000526