移动报表数据接口模块
来源:互联网 发布:软件运营维护方案 编辑:程序博客网 时间:2024/05/18 03:12
移动报表数据接口的作用是把来自报表平台的数据文件转入到移动报表的本地数据库中。
数据文件是CSV格式,无标题行.
1 CSV文件转入本地数据库的方法
数据文件是为eReport生成的,因此容易自然地假定从文本文件到数据库是不需要进行转换的。
但这种限制会影响程序的适应性.
从数据文件到本地数据库是否需要对文本数据的列进行转换,是影响解决方案选择的重要因素。
如果需要支持列-字段的数据转换,有以下选择:
(1)通过BillCom先进行转换,把源文本文件转换为中间文件,再对中间文件进行处理
优点:可以利用BillCom的的转换能力
缺点:中间文件环节增加了开销,影响性能
(2)实现一个表达式计算器,导入时处理转换,可利用lua实现
(3)通过中间库,先不加转换地写入中间库,然后利用SQL在抽取阶段实现转换
缺点也是增加了中间环节
(4)利用Microsoft Text Driver实现
可以利用Jet SQL的函数进行转换
拟采用方案4.
利用Microsoft Text ODBC Driver直接处理CSV数据文件,无需开发CSV解析器,并且有Jet SQL对转换的支持
如:select len(f1),f2,NOW() from shop.txt是有效的语句
此方案的缺点是只支持Windows。dxi_csv可以做为后台任务独立部署,不会影响应用服务器跨平台的要求。
(如果需要跨平台,则考虑采用libcsv_parser++,并增加lua脚本支持字段函数转换)
2 接口处理
l
接口处理有2个步骤:
(1)数据文件下载
利用kiwi的ftpsync把数据文件下载到本地服务器,下载文件保存在配置的目录下,dxi_csv以此为输入,对其中的文件按顺序处理,每种类型的文件按文件名中指示的顺序号处理。
(2)数据文件处理
开发一个dxi_csv插件,负责eReport的接口文件的处理.
不同的文件类型可配置成并行处理.
同一类型的文件只处理最后的一个文件.
每种数据文件的处理逻辑在dxi_csv.conf中配置。
数据文件的处理逻辑如下:
l 通过ADO读入数据文件内容,字段和目标数据表的字段名称相同
l 生成数据文件记录的INSERT语句,并执行
l 如果违反唯一性约束,则按修改处理此记录
l 每个数据文件的处理在一个事务中
处理后的文件根据配置是否转储.
如果处理失败,则根据错误类型判定是否需要重做.
错误信息输出到系统日志表中,系统管理员通过系统日志功能查看.
ftpsync,dxi_csv和eReport可以各自部署.
3 dxi_csv实现
dxi_csv数据文件处理主要活动如下:
l 遍历file_path>目录下的指定类型(并行处理)或全部txt后缀的文件
l 确定需要处理的文件(根据文件流水号排序,确定最后的文件)
l 利用Jet数据库引擎读数据文件
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\temp\t\;Extended Properties="text;HDR=No;FMT=Delimited";
l 遍历记录:对每条记录生成INSERT语句,执行,如果是违反唯一性约束,则执行修改
l 执行成功后备份文件,备份文件自动分目录组织.
3.1 配置(dxi_csv.conf)
<?xml version="1.0" encoding="gb2312" standalone="no" ?>
<config>
<dbc>laton</dbc>
<file_path> <!--处理文件的路径,可以是相对路径-->
</file_path>
<handle_mode> <!-- 处理模式 1-串行:每个文件顺序处理 2-并行:不同类型的数据文件并行处理 默认:2 -->
</handle_mode>
<backup> <!--备份 -->
<enabled>true</enabled> <!--是否备份 true:备份 false:不备份,默认:false-->
<path></path> <!--备份文件目录 -->
</backup>
<data_type_list> <!--数据类型列表 -->
<data_type> <!-- 数据类型转换信息 -->
<id>shop</id> <!--id:识别数据类型(如shop,yingysumr,newshop),与文件名前缀相同 -->
<table_name>shop</table_name> <!--写入的本地数据表名 -->
<key_field>f1,f2</key_field> <!--本地数据表的主键字段名,多个字段用","分隔 -->
<field_list>f1 as shop_id,f2 as shop_data</field_list> <!--文本列-表字段对应关系-->
</data_type>
</data_type_list>
</config>
4 参考资料
l Microsoft Text ODBC Driver
http://www.connectionstrings.com/providers/microsoft-text-odbc-driver
l Connect to Text Files with the Microsoft Jet ODBC Text Driver
http://www.users.drew.edu/skass/sql/TextDriver.htm
l csv-parser-cplusplus
http://code.google.com/p/csv-parser-cplusplus/
l A Fast CSV Reader
http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader
l Comparison of Microsoft Jet SQL and ANSI SQL
http://office.microsoft.com/en-us/access-help/comparison-of-microsoft-jet-sql-and-ansi-sql-HP001032250.aspx
Microsoft Jet database engine SQL is generally ANSI -89Level 1 compliant.
- 移动报表数据接口模块
- 移动应用数据接口
- 数据报表之Excel操作模块
- 移动端数据接口返回数据格式(上)
- 移动端数据接口返回数据格式(下)
- MS数据访问加速模块接口
- 化工企业数据分析报表系统项目之销售模块分析
- SAP中MM模块采购数据报表(入库,订单)
- Python学习笔记-数据报表之Excel操作模块
- PHP开发移动客户端接口---查询数据接口
- PHP开发移动客户端接口---插入数据接口
- PHP开发移动客户端接口---删除/修改数据接口
- 从Corba接口中取到的数据填充FastReport报表
- 从Corba接口中取到的数据填充FastReport报表
- 报表开发工具Finereport移动端app js接口列表【全】
- 报表导出模块实现
- 使用HBuilder开发移动APP:ajax调用接口数据
- php接口获取不到移动端访问的数据
- ios开发之ASIHTTPRequest-授权流程图
- sizeWithFont:方法使用明细
- mingw编译linphone-3.5.2
- hdu 2546 饭卡 换了问法的01背包
- About cocos2d color blend: (only for opengl es 1.1)
- 移动报表数据接口模块
- 数据存储结构 mongoDB
- C++ this指针 [大三TJB_708]
- 使用PHP实现计算两个日期间隔的年、月、周、日数
- 关于$_SERVER()
- 开源:给每个文档计算一个指纹,然后用指纹进行相似度的计算 含源码和可执行程序
- 让 IIS Express 支持 PHP
- apache/nginx access.log 说明
- ajax实时查库,实现输入框的自动完成提示框功能