用于大型数据集的报告工具/查看器

时间:2010-05-05 18:40:45

标签: sql excel ms-access report reportviewer

我有一个数据处理系统,可以为其处理的数据生成非常大的报告。 “大”我的意思是,这个系统的“小”执行在转储到CSV文件时产生大约30 MB的报告数据,而大数据集大约130-150 MB(我确信有人有更大的想法) “大”但这不是重点...;)

Excel以其数据列表的形式为报表使用者提供了理想的界面:用户可以即时过滤和分段数据,以查看他们感兴趣的具体细节(因为他们并不感兴趣在成千上万的行中,他们知道如何应用多个过滤器来获取他们想要的数据) - 他们还可以为报告添加注释和标记,创建图表,图表等......他们知道如何做到这一切和如果我们只是给他们数据,那么让他们这样做会容易得多。

Excel非常适合小型测试数据集,但它无法处理这些大型测试数据集。有没有人知道可以提供与Excel数据列表类似的界面的工具 - 能够在多个字段上动态创建和更改过滤器;但可以处理更大的文件?

我尝试的下一个工具是MS Access,发现Access文件膨胀很大(30 MB输入文件导致大约70 MB的Access文件,当我打开文件时,运行一个报告并关闭它,文件位于120 -150 MB!),导入过程很慢且非常手动(目前,CSV文件是由运行主进程的相同plsql脚本创建的,所以我的下一步没有干预)。我还尝试了一个Access数据库,其中包含存储报告数据的数据库表的链接表,并且速度慢了很多倍(出于某种原因,sqlplus可以在一分钟或一小时内查询并生成报告文件,而Access可能需要2到2之间的任何时间5分钟的相同数据)

(如果有帮助,数据处理系统用PL / SQL编写并在Oracle 10g上运行。)

4 个答案:

答案 0 :(得分:2)

在这种情况下,访问将是一个很好的工具,因为与excel不同,它没有实际的行限制。当他们习惯于自定义过滤器的强大功能时,困难的部分就是让人们脱离excel。在访问中很有可能获得近似于此的东西,但除非您在表单中嵌入excel控件,否则它永远不会完全相同。

对于手动部分,您可以编写数据库脚本以使用VBA导入文件。例如,假设你的这个主要任务在晚上将文件转储到一个带有新文件的文件夹中。您可以创建一个“看门狗”访问数据库,该数据库打开一个“OnTimer”事件,每隔几分钟查看该文件夹,当它找到一个新文件时,它开始导入。当您的用户早上开始工作时,数据已经加载。

至于膨胀,是的它可能是一个问题,但是你需要做的就是快速压缩和修复文件,它会缩小它。

编辑:

您可以通过选项设置要紧密压缩的访问数据库。我无法准确记住它在哪里,在工作中我们只能访问97(但奇怪的是办公室2003)。另一种选择是通过代码压缩。这是一个解释如何

的链接

http://forums.devarticles.com/microsoft-access-development-49/compact-database-via-vba-24958.html

答案 1 :(得分:2)

有趣的;对于这类问题,中档并不是很多。访问应该是它,但正如你已经发现的那样,在很多方面都非常糟糕,并且对于许多最终用户来说可能有点过于先进。

另一方面,如果你有一个数据库服务器,那么不使用它的功能似乎是一种耻辱。有几种不同成本和复杂性的工具可以让您设置相当用户友好的基于服务器的报告,您可以让用户为自己的报告设置参数,然后在服务器上进行过滤,并且可以他们的结果导出到Excel,例如Oracle Discoverer或Microsoft Reporting Services(可以设置为直接在Oracle数据库上报告,即使它是基于SQL Server的。)

我们使用Microsoft Reporting Services;我在Developer Studio中构建报告,允许用户访问网页,按照几个预定义的标准进行过滤,运行报告(在服务器上完成辛苦工作)并将结果导出到Excel以进行进一步处理

您设置报告的中途房屋可以将初始数据过滤到不到一百万行,然后导出到Excel可能是最佳选择......

答案 2 :(得分:1)

什么版本的Excel,它现在可以处理相当大的数据量。在Excel 2007中,工作表大小为16,384列,1,048,576行。你真的在一份报告中发送了超过一百万条记录吗?嘿,谁会看那样的数据?

答案 3 :(得分:1)

我建议你使用Excel前端来共享RDB后端 构建Excel的自定义过滤系统(我会使用驻留在服务器上的VBA和ADO XLA,但有几种技术可用),最终用户驱动并生成SQL以将他们想要的数据子集带回Excel玩(图表,计算,打印等)。