【发布时间】:2014-12-24 16:49:06
【问题描述】:
我有一个项目,我想在 Excel VBA 中自动报告一大组数据。基本上我有一个超过 1,000,000 条记录的数据库,我想从中提取约 100,000 条记录。我拥有 100,000 个项目的唯一方法是在 Excel 工作表中,我无法将其转储到同一个数据库中进行过滤或转储到同一服务器上的临时表中。 有没有办法将 Excel 电子表格值视为数据库并在 VBA 的 SQL 查询中调用它?我不想使用循环,因为数据库响应已经很差了。
想法?
谢谢。
编辑 - 根据一条评论,我对“循环不好”的假设是不正确的。这是真的?循环遍历 ID 是否必须轮询数据库 100,000 次,还是将其视为单个数据拉取?
【问题讨论】:
-
我不清楚您要做什么:您的标题谈到了 2 个不同的数据源,但您的问题只提到了 1 个数据源。您正在尝试将 100K excel 记录与数据库中的 1000K 记录连接起来吗?
-
Excel 100k 列表是一个数据源... 1m 条记录在 DB2 数据库中。 100k ID 驻留在 1m 记录中,我正在寻找一种方法来从 DB2 记录集中提取 100K 记录。我认为循环会非常费力,但从下面的 cmets 来看,我可能是错的。我可以通过任何方式从 1m 个 DB2 记录中获取 Excel 表中的 100k 个 ID,而无需将 DB2 中的所有记录加载到 Excel 中。
-
我建议在您的 db2 数据库中使用一个存储过程,该过程接受 ID 值列表作为输入参数。根据您的数据库中的要求处理值。这会很棘手,因为您可能会遇到某种最大允许数量。然后运行相应的查询。在 vba 中,读取带有 id 字段的列,调用存储过程,并对查询结果做一些事情。
-
我只能查询DB2数据库。我没有选择在该数据库中存储任何内容。我仅限于查询 DB2。如果我有权制作临时表,这将很容易。啊。也许我只是在以错误的方式思考这个问题。