银行卡统计分析系统Excel解析详细设计_第1页
银行卡统计分析系统Excel解析详细设计_第2页
银行卡统计分析系统Excel解析详细设计_第3页
银行卡统计分析系统Excel解析详细设计_第4页
银行卡统计分析系统Excel解析详细设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE银行卡统计分析系统Excel解析详细设计文档信息编写者编写日期审核者审核日期批准人批准日期变更历史日期变更描述批准文档资料分发姓名职位机构目录1 概述 11.1 目的 11.2 预期的读者和阅读建议 11.3 文档约定 11.4 参考文献 12 基础数据区到应用区excel解析 22.1 IQ版excel解析设计思路 22.2 INDEX举例说明: 22.3 单个sheet模板定义 32.4 程序接口 32.5 程序处理流程 42.6 程序运行环境 52.7 返回码 52.8 生成脚本举例 53 报表区excel解析 133.1 程序接口 143.2 程序处理流程 143.3 程序运行环境 143.4 返回码 14第14页第1页概述目的预期的读者和阅读建议文档约定参考文献

基础数据区到应用区excel解析IQ版excel解析设计思路为适应总行数据库的变更和生成脚本的统一,规范管理,特产生该excel解析工具。该解析工具采用java开发,对银行卡系统的多平台工作起了决定性的帮助。每个excel基本上对应应用区的一个表,但有可以串在一起跑的可以合在一起。每个excel文件都有一个叫“INDEX”的sheet页――引导页,生成的脚本由引导页的<ACTION>来决定一切。生成文件名=生成脚本名.sql,该脚本由该行sheet页定义的个数和具体的sheet页决定。<Action>组合名称串ID父串ID处理方式生成脚本名sheet页数sheet页名1……..sheet页名n</Action>INDEX举例说明:<Action>组合名称串ID父串ID处理方式生成脚本名sheet页数sheet页名1sheet页名2sheet页名3串1s1串行CA_CR_YEAR_OVER_INFO1CA_CR_YEAR_OVER_INFO串2s2s1串行CA_CR_DAY_OVER_INFO1CA_CR_DAY_OVER_INFO串3s3s2串行CA_CR_YEAR_NEW_OVER1CA_CR_YEAR_NEW_OVER串4s4串行CA_CR_DAY_OVER_BAL1CA_CR_DAY_OVER_BAL串5s5串行CA_CR_YEAR_BAD_OVER1CA_CR_YEAR_BAD_OVER串6s6串行CA_CR_YEAR_END_BAL_OVER1CA_CR_YEAR_END_BAL_OVER串7s7s3/s4/s5/s6串行CA_CR_YEAR_OVER3CA_CR_YEAR_OVERCA_CR_YEAR_OVER_ccyA0CA_CR_YEAR_OVER_ccyB0</Action>由该例子可以看到,该excel文件最终会生成7个sql脚本,分别是:CA_CR_YEAR_OVER_INFO.sqlCA_CR_DAY_OVER_INFO.sqlCA_CR_YEAR_NEW_OVER.sqlCA_CR_DAY_OVER_BAL.sqlCA_CR_YEAR_BAD_OVER.sqlCA_CR_YEAR_END_BAL_OVER.sqlCA_CR_YEAR_OVER.sql对于每个sql脚本,其内容由所提供的sheet页支持,但是记住,对于每个串行,处理n个目标表,就必须有n个清除语句来先清除垃圾数据。单个sheet模板定义每个sheet页又有自己的一套设计模板,其中,IQ版的模板和ASE的模板总体不变,为适应IQ版的处理模式,特增加新标签<Clean>清除条件备注deletefrom表名where条件</Clean>Sheet页面如果存在该标签的就先处理该清除语句,然后再执行由MAPPING组装成的insert语句,否则直接执行insert语句。具体的Mapping格式定义详见附件《银行卡统计分析系统DATAMAPPING编写规范.doc》程序接口输入:DATAMAPPING的excel文件输出:生成脚本名.sql程序处理流程读取excel文件的配置文件读取excel文件的配置文件Excel文件读取excel文件的源表读取excel文件的目标表读取excel文件的目标表字段读取excel文件的源表字段读取excel文件的关联语句读取excel文件的where语句组成一个sheet页的sql语句读取指定sheet页组成excel文件的sql语句根据策略组装成完整的一个可执行脚步程序(目标表名.sh)读取INDEXt页程序运行环境基于jre1.4以上的运行环境返回码返回码说明0成功1出错生成脚本举例#/****************************************************************************#*功能:该脚本处理数据从基础数据进入应用数据区的流程*#****************************************************************************/if[$#-lt8]||["$1"=""]||["$2"=""]||["$3"=""]||["$4"=""]||["$5"=""]||["$6"=""]||["$7"=""]||["$8"=""]thenecho"此执行脚本传入的参数不符合要求<目标表名><数据生效日期><接口文件><数据库服务器><用户名><密码><bin路径>"return4fiTbName=$1ST=$2newValidDate=$2sybfaces=$3DBSERVER=$4DBUSER=$5DBPWD=$6ENV_WORK_MAIN_PATH=$7TRANP=$8logname=$7/../log/${newValidDate}/$TRANP/${TbName}.subnullfile=$7/../log/null>$lognameif[$?-ne0]thenecho"不能创建$logname"exit-4fiWeek_Day=$ENV_WORK_MAIN_PATH/WeekDayDate_Add=$ENV_WORK_MAIN_PATH/DateAdd.$ENV_WORK_MAIN_PATH/CheckDateEOFFLAG=`Check_DateME$newValidDate`if["$EOFFLAG"!="Y"]thenecho"$newValidDate不是月末,暂不往下处理,直接退出"echo"=*=此脚本运行成功完毕=*=,`date'+%Y%m%d.%T'`"exit0fiecho"脚本开始启动,[`date+%Y.%m.%d-%T`]"begintime=`date+%Y.%m.%d-%T`echo"==**************************************************************************==">$lognameecho"==****************sql开始**BeginTime=[$begintime]***********==">>$lognameecho"==**************************************************************************==">>$lognameecho"0.准备执行表清除,`date+%Y.%m.%d-%T`"while[1]doisql-I$sybfaces-U$DBUSER-P$DBPWD-S$DBSERVER-Jiso_1<<EOF>>$lognameCREATEVARIABLEret1intgosetret1=0goPrint'0.准备执行表清除'deletefromCA_CR_PREPAREwhereDte_Id='$newValidDate'setret1=@@Errorifret1=0Print'0.成功执行表清除'elsePrint'0.失败执行表清除'goPrint'==**************************************************************************=='Print'==************************第0步结束****************************************=='Print'==**************************************************************************=='goquitEOFgrep"0.成功执行表清除"$logname1>$nullfile2>$nullfileif[$?-ne0]thenecho"0.失败执行表清除,`date+%Y.%m.%d-%T`"echo"现在退出" endtime=`date+%Y.%m.%d-%T`echo"==******Begintime=[$begintime],EndTime=[$endtime]****==">>$lognameexit-4elseecho"0.成功执行表清除,`date+%Y.%m.%d-%T`"breakfidoneecho"==******************************************************************=="echo"1.准备插入数据至CA_CR_PREPARE,`date+%Y.%m.%d-%T`"while[1]doisql-I$sybfaces-U$DBUSER-P$DBPWD-S$DBSERVER-Jiso_1<<EOF>>$lognameCREATEVARIABLEret1intgosetret1=0goPrint'1.准备插入数据至CA_CR_PREPARE'insertCA_CR_PREPARE(Dte_Id, --日期Bank_Code, --机构号Ccy_Code, --币种代码Loss_Prepare_Bal, --损失准备余额Upd_Cancel_Amt, --本期冲销金额Back_Amt, --本期转回金额Chk_Cancel_Amt --本期核销金额)selectDte_Id,Bank_Code,Ccy_Code,Prepare_Amt,Upd_Cancel_Amt,Back_Amt,Chk_Cancel_AmtfromCH_CR_CARD_PREPAREcawhereConf_Markin('1','A')anddatepart(yy,Dte_Id)=datepart(yy,'$newValidDate')anddatepart(mm,Dte_Id)=datepart(mm,'$newValidDate')setret1=@@Errorifret1=0Print'1.成功插入数据至CA_CR_PREPARE'elsePrint'1.失败插入数据至CA_CR_PREPARE'goPrint'==**************************************************************************=='Print'==************************第1步结束****************************************=='Print'==**************************************************************************=='goquitEOFgrep"1.成功插入数据至CA_CR_PREPARE"$logname1>$nullfile2>$nullfileif[$?-ne0]thenecho"1.失败插入数据至CA_CR_PREPARE,`date+%Y.%m.%d-%T`"echo"现在退出" endtime=`date+%Y.%m.%d-%T`echo"==******Begintime=[$begintime],EndTime=[$endtime]****==">>$lognameexit-4elseecho"1.成功插入数据至CA_CR_PREPARE,`date+%Y.%m.%d-%T`"breakfidoneecho"==******************************************************************=="echo"2.准备插入数据至CA_CR_PREPARE,`date+%Y.%m.%d-%T`"while[1]doisql-I$sybfaces-U$DBUSER-P$DBPWD-S$DBSERVER-Jiso_1<<EOF>>$lognameCREATEVARIABLEret1intgosetret1=0goPrint'2.准备插入数据至CA_CR_PREPARE'insertCA_CR_PREPARE(Dte_Id, --日期Bank_Code, --机构号Ccy_Code, --币种代码Loss_Prepare_Bal, --损失准备余额Upd_Cancel_Amt, --本期冲销金额Back_Amt, --本期转回金额Chk_Cancel_Amt --本期核销金额)selectDte_Id,Bank_Code,'A0',convert(decimal(18,2),sum(Loss_Prepare_Bal*erc.ERCCNYMIDPRC)),convert(decimal(18,2),sum(Upd_Cancel_Amt*erc.ERCCNYMIDPRC)),convert(decimal(18,2),sum(Back_Amt*erc.ERCCNYMIDPRC)),convert(decimal(18,2),sum(Chk_Cancel_Amt*erc.ERCCNYMIDPRC))fromCA_CR_PREPAREcaleftouterjoinp_abis_ercerconca.Ccy_Code=erc.ERCCCYCODand'$newValidDate'betweenerc.startdateanderc.enddatewhereca.Dte_Id='$newValidDate'andca.Ccy_Codenotin('B0','A0')groupbyDte_Id,Bank_Codesetret1=@@Errorifret1=0Print'2.成功插入数据至CA_CR_PREPARE'elsePrint'2.失败插入数据至CA_CR_PREPARE'goPrint'==**************************************************************************=='Print'==************************第2步结束****************************************=='Print'==**************************************************************************=='goquitEOFgrep"2.成功插入数据至CA_CR_PREPARE"$logname1>$nullfile2>$nullfileif[$?-ne0]thenecho"2.失败插入数据至CA_CR_PREPARE,`date+%Y.%m.%d-%T`"echo"现在退出" endtime=`date+%Y.%m.%d-%T`echo"==******Begintime=[$begintime],EndTime=[$endtime]****==">>$lognameexit-4elseecho"2.成功插入数据至CA_CR_PREPARE,`date+%Y.%m.%d-%T`"breakfidoneecho"==******************************************************************=="echo"3.准备插入数据至CA_CR_PREPARE,`date+%Y.%m.%d-%T`"while[1]doisql-I$sybfaces-U$DBUSER-P$DBPWD-S$DBSERVER-Jiso_1<<EOF>>$lognameCREATEVARIABLEret1intgosetret1=0goPrint'3.准备插入数据至CA_CR_PREPARE'insertCA_CR_PREPARE(Dte_Id, --日期Bank_Code, --机构号Ccy_Code, --币种代码Loss_Prepare_Bal, --损失准备余额Upd_Cancel_Amt, --本期冲销金额Back_Amt, --本期转回金额Chk_Cancel_Amt --本期核销金额)selectDte_Id,Bank_Code,'B0',convert(decimal(18,2),sum(Loss_Prepare_Bal*erc.ERCUSDRAT)),convert(decimal(18,2),sum(Upd_Cancel_Amt*erc.ERCUSDRAT)),convert(decimal(18,2),sum(Back_Amt*erc.ERCUSDRAT)),convert(decimal(18,2),sum(Chk_Cancel_Amt*erc.ERCUSDRAT))fromCA_CR_PREPAREcaleftouterjoinp_abis_ercerconca.Ccy_Code=erc.ERCCCYCODand'$newValidDate'betweenerc.startdateanderc.enddatewhereca.Dte_Id='$newValidDate'andca.Ccy_Codenotin('01','A0','B0')groupbyDte_Id,Bank_Codesetret1=@@Errorifret1=0Print'3.成功插入数据至CA_CR_PREPARE'elsePrint'3.失败插入数据至CA_CR_PREPARE'goPrint'==**************************************************************************=='Print'==************************第3步结束****************************************=='Print'==**************************************************************************=='goquitEOFgrep"3.成功插入数据至CA_CR_PREPARE"$logname1>$nullfile2>$nullfileif[$?-ne0]thenecho"3.失败插入数据至CA_CR_PREPARE,`date+%Y.%m.%d-%T`"echo"现在退出" endtime=`date+%Y.%m.%d-%T`echo"==******Begintime=[$begintime],EndTime=[$endtime]****==">>$lognameexit-4elseecho"3.成功插入数据至CA_CR_PREPARE,`date+%Y.%m.%d-%T`"breakfidoneecho"==******************************************************************=="echo"4.准备插入数据至CA_CR_PREPARE_SUM,`date+%Y.%m.%d-%T`"while[1]doisql-I$sybfaces-U$DBUSER-P$DBPWD-S$DBSERVER-Jiso_1<<EOF>>$lognameCREATEVARIABLEret1intgosetret1=0goPrint'4.准备插入数据至CA_CR_PREPARE_SUM'insertCA_CR_PREPARE_SUM(Dte_Id, --日期Bank_Code, --机构号Ccy_Code, --币种代码Loss_Prepare_Bal, --损失准备余额Upd_Cancel_Amt, --本期冲销金额Upd_Cancel_Amt_Tot, --本年累计冲销金额Back_Amt, --本期转回金额Back_Amt_Tot, --本年累计转回金额Chk_Cancel_Amt, --本期核销金额Chk_Cancel_Amt_Tot --本年累计核销金额)selectca.Dte_Id,ca.Bank_Code,ca.Ccy_Code,isnull(sum(ca.Loss_Prepare_Bal),0.00),isnull(sum(ca.Upd_Cancel_Amt),0.00),isnull(sum(catmp.tol1),0.00),isnull(sum(ca.Back_Amt),0.00),isnull(sum(catmp.tol2),0.00),isnull(sum(ca.Chk_Cancel_Amt),0.00),isnull(sum(catmp.tol3),0.00)fromCA_CR_PREPAREcainnerjoin(select'$newValidDate'asDate_Id,Bank_Code,Ccy_Code,sum(Upd_Cancel_Amt)astol1,sum(Back_Amt)astol2,sum(Chk_Cancel_Amt)astol3fromCA_CR_PREPAREwheredatepart(yy,Dte_Id)=datepart(yy,'$newValidDate')groupbyBank_Code,Ccy_Code)catmponca.Dte_Id=catmp.Date_Idandca.Bank_Code=catmp.Bank_Codeandca.Ccy_Code=catmp.Ccy_Codewhereca.Dte_Id=convert(date,'$newValidDate')andca.Ccy_Codein('01','A0','B0')groupbyca.Dte_Id,ca.Bank_Code,ca.Ccy_Codesetret1=@@Errorifret1=0Print'4.成功插入数据至CA_CR_PREPARE_SUM'elsePrint'4.失败插入数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论