如何使用VBA从数据库中保存数百万条记录?

时间:2012-11-09 18:47:55

标签: sql oracle excel vba ms-access-2010

我需要查询数据库并保存600多万条记录,以便以后使用excel VBA进行分析和报告。最好的方法是什么?我需要以后能够访问数据,分析它并生成分析数据的报告(我应该能够在我的系统中本地访问整个数据,并且应该能够快速处理它)MS访问保存数据有多好如果记录的数量达到数百万?我没有很多使用oracle和VBA的经验。如果与excel VBA一起使用,这是一个好方法吗?如果有人能提供一些可能有助于我完成任务的链接,请欣赏它。

注意:由于我无法控制的原因,我无法选择使用其他语言。我在Java方面相当不错,但不能使用它。

2 个答案:

答案 0 :(得分:2)

  

我需要查询数据库并保存600多万条记录,以便以后使用excel VBA进行分析和报告。

我希望分析将在这些记录的SUBSET上完成,因为即使使用Excel 2010,您也只能使用1,048,576行。

  

我需要以后能够访问数据,分析它并生成分析数据的报告(我应该能够在我的系统中本地访问整个数据,并且应该能够快速处理它)MS访问有多好如果记录数量达到数百万?保存数据?

它会做到的。我已经完成了它(包括,多年前,通过直接连接到Oracle数据库),尽管包中的小丑是有多少列在其中的问题,正如其中一条评论所提到的那样。使用海量数据集时,很容易开始对Access中的2GB文件大小限制。

“快”是另一回事。我基本上已经停止使用Access,因为除了其他方面,我认为在处理大数据量时速度慢得令人无法接受。无论“JET”这个名字来自哪个[1],肯定哈迪斯并不是它速度的隐喻。

Access确实具有的一个优点是,它可以让您非常轻松地(如果不是很快)生成Excel风格的分析报告(包括一些图形报告),并允许您在创建它们时使用VBA。另一方面,SQL Server是我的数据处理器,速度要快得多,但根本没有任何前端。理想的情况可能是(也提到)使用Access或Excel来执行前端和SQL Server来进行繁重的工作,除非(更好的是)你可以在Oracle中解除这个问题,而不是在本地保存数据,然后让Excel / VBA为您直接从Oracle提取的汇总查询创建报告。

如果报告运行到数百万行,我会回避使用Excel,但实际上,无论如何,没有那么长时间运行的报告是值得的。这是一个数据转储,而不是报告。


[1]是的,是的,我知道,联合发动机技术。

答案 1 :(得分:2)

如果要在Excel中操作超过100万行数据,则应查看PowerPivot,它是Excel 2010的加载项(它内置于Excel 2013中)。除了每行的计算字段外,它还允许1亿行数据,尽管这些计算可能比其他人推荐的SQL后端/ Excel前端解决方案慢。