首页 新闻 会员 周边 捐助

跪求思路:大批量数据导出

0
悬赏园豆:20 [已解决问题] 解决于 2008-06-29 11:07
<DIV class=postTitle><A class=postTitle2 id=homepage1_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl00_TitleUrl href="http://www.cnblogs.com/mapk/archive/2008/06/17/1224288.html"><FONT color=#bd1717></FONT></A>&nbsp;</DIV> <DIV class=postCon>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在做一个交通的项目,大致应用是这样的,在主要路口安装摄像机,采集通过车辆的信息,包括车速、车牌号码、近景图、远景图、号牌图等信息,把这些信息传至与它相连的工控机,工控机再把传至中心机房的数据库(数据量巨大)。我做的那块功能主要是对中心数据库数据的查询统计等功能。其中一个功能是可以查询过往车辆的信息,幷可查看对应的照片,在线查询的时候没什么问题(分页显示)。现在用户要求可以把这些查询的结果的导出,幷包含图片,幷能分页查看,跟在线查看一样。这可把我难住了,导出就要求把所有的查询结果一次取出来,数量可能数以万计,(比如查询某个时间段通过的所有车辆,为案件侦破提供线索)。<BR>这里边有三个棘手的问题:<BR>1. 应用是b/s结构,一次取出数以万计的记录导出,以什么形式?xml ? excel ? <BR>&nbsp;&nbsp;&nbsp; 如果把这么多的记录放到html页面里,光这个页面就要几十兆,估计一点击浏览器就死掉了。<BR>2. 导出的数据要求能翻页查看,翻页?怎么搞?<BR>3. 应用方式和在线查询一样,点击某条记录时可以查看照片,这些图片只是在数据库的表中存了个路径,实际位置可<BR>&nbsp;&nbsp; 能在工控机 也可能在文件服务器,在线查看的时候没什么问题,导出的话这些图片的下载怎么办?<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;偶想来想出,没什么办法,只感觉到一点,不能不加限制的让他导出,一定要对导出的记录数量做个限制,要不他一下子导出十万、一百万条记录,那程序估计要挂了。<BR>&nbsp;&nbsp;&nbsp;这个功能还是比较有用的,比如某个单位向交警队要某个时间段通过某些路口的车辆的信息,交警队把导出的结果给他们。兄弟们给出出注意,咋办啊?</DIV>
问题补充: 图片不能远程读取,这个应用是在公安网内的,而导出的数据使用时可能不在公安网。
AK47+的主页 AK47+ | 初学一级 | 园豆:107
提问于:2008-06-17 23:07
< >
分享
最佳答案
0
对你的提问逐一回答如下: 1、XML、Excel、Access都是是可以的,但是效率如何呢,关键不是导出的形式,而是导出的方法。 (1)、关于服务器压力方面。该程序为B/S模式,那么导出的结果如果不被下载那么就会存储在服务器的某个目录下,时间长了,服务器能受的了存储这么多的数据(其中有大量的重复数据)吗?所以导出的目的不是为了离线浏览,如果用户离线了你的网页还能打开吗?其实导出数据的目的主要是为了在其他地方可以导入,并查看浏览,就像你叙述的:“某个单位向交警队要某个时间段通过某些路口的车辆的信息,交警队把导出的结果给他们。”如果是这样使用的情况较多,那么建议导出为Excel,这样使用方不需要其他数据库查看软件就能打开查看。所以导出必定要被下载、下载完成必定要删除服务器上的导出结果,而导出后不下载也要删除导出结果。 (2)、关于导出数据的效率方面。需要为不同用户建立不同的文件夹以便在这些文件夹中存放用户的导出结果,而不会使得文件发生冲突(比如两个用户同时在做查询结果导出操作)。 2、不知道你说的导出结果要翻页查看是指在哪个程序里翻页查看,如果是连线状态那么就没有必要去管导出结果了,而只要用户的查询条件还在那么依旧用连线的查询方式显示就可以了(这与是否做导出功能操作无关)! 3、依旧与第2点问题一样,到底你的B/S程序是什么样的,用户离线了还能访问并浏览你的网页吗,怎么说的像是在开发C/S程序呢?还请再叙述清楚些! 关于图片的问题,导出时可以将图片插入到Excel的某个单元格中,只要你知道图片地址,能读取出图片数据就能插入到Excel中。(如果你不信,那么你可以新建一个Excel,选中某个单元格,再在Excel的功能菜单中选择插入一幅图片,看看是否能显示,所以写代码也一定能实现此功能!)
刚刚 | 老鸟四级 |园豆:3151 | 2008-06-18 18:34
其他回答(5)
0
可以导出小文件(xml的形式),比如按照20条分页,可以每个文件100条记录,1w条就是100个文件,按照一定的格式命名文件名,以便于查询,,数目再大,可以在里面建立小文件夹,比如1w条建立一个文件夹,等等 图片应该是能读取远程的吧,一起下载了可能就大了...
wingoo | 园豆:1513 (小虾三级) | 2008-06-18 00:15
0
客户说要导出10w,100w的数据,但是没有让你一下都导出(因为一下导出10w条,就算你的程序能做到,这么大一坨,客户看都看不过来),你可以按照某种客户需要的顺序一页一页的导出,每页20条。
玉开 | 园豆:8822 (大侠五级) | 2008-06-18 08:52
0
感觉可以导成EXCEL吧(不需要程序的时间也可以查看)~~限制每个文件的总数量, 分页嘛就把这个EXCEL做为数据源,程序是固定的, 比如写个WINFORM程序就可以看了`~~要不写个ASP,.net的也可以`~
沙加 | 园豆:3680 (老鸟四级) | 2008-06-18 09:08
0
玉开说的对,客户只要按分页的数据一条条的察看的,你只要写个好的分页存储过程,不要用那种临时表的那中,大数据量也没什么的.还不是要一条条的操作? 如果客户要导出数据再查看,那基本上就是下载的问题了
yeyang | 园豆:418 (菜鸟二级) | 2008-06-18 09:25
0
我觉得大数据导出应该不是问题。你没必要一次性从数据库里把所有数据都取出来。可以分页取,再在导出的时候,加个进度条,这样在可视化上面,就感觉很好,而且也不会出现页面长时间工作假死状态。
李.net | 园豆:730 (小虾三级) | 2008-06-18 09:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册