【问题标题】:SQL/MYSQL: How to display 3 identical tables (from 3 different database files) as if it is a single tableSQL/MYSQL:如何显示 3 个相同的表(来自 3 个不同的数据库文件),就好像它是一个表一样
【发布时间】:2013-03-14 10:09:12
【问题描述】:

我有一个包含大约 500 万条记录的 ORACLE 表,并且还在增长。他们正在使用访问将数据导出到(从 Oracle 到 Access)。不管我给他们什么建议,他们都不会改变他们的系统。

因此,为了能够处理数据并将其导出到 Excel,我必须将数据拆分为 3 个数据库文件。例如,假设我有表格

database1.TBL_A_to_G

database2.TBL_H_to_O

database3.TBL_P_to_Z

由于它们来自单个表,因此它们具有相同的字段。比方说,

字段 1、字段 2、字段 3...字段 30

如何在访问中获取查询,我从 3 个表中获取数据的位置就好像它是一个表一样?

我试过了

从 TBL_A_to_G 中选择 Field1、Field2、Field3、Field4、... Field30

联合

SELEC Field1, Field2, Field3, Field4, ... Field30 FROM TBL_H_to_O

-我必须将此查询保存为 TBL_A_O,然后,

从 TBL_A_O 中选择 Field1、Field2、Field3、Field4、... Field30

联合

从 TBL_P_to_Z 中选择 Field1、Field2、Field3、Field4、... Field30

这种方法的问题是我不能在一个查询语句中合并三个表。我收到一条错误消息,说我可以合并那么多字段。另外,我仍然遇到一些性能问题。我需要找到一种兼顾性能的方法。

我也愿意接受其他选择。目标是从这 3 个表(在三个不同的数据库中)获取数据,然后将它们作为查询(使用公式等)导出到 excel 中。

【问题讨论】:

  • “我收到一条错误消息,说我可以合并那么多字段。”请提供确切的错误消息。
  • 我知道你说过他们不会改变他们做事的方式,但是......你知道更新的 Excel 可以直接从 Oracle 中提取数据吗?
  • Excel 没有 65k 行限制吗?
  • @Sam Yi,从 Excel 2007 开始,这些是新的限制:1,048,576 行 x 16,384 列。

标签: sql vba ms-access ms-access-2007


【解决方案1】:

尝试改用union all

SELECT Field1, Field2, Field3, Field4, ... Field30 FROM TBL_A_to_G
UNION ALL
SELECT Field1, Field2, Field3, Field4, ... Field30 FROM TBL_H_to_O
union all
SELECT Field1, Field2, Field3, Field4, ... Field30 FROM TBL_P_to_Z

每个表只有 30 个字段,这对于 Access 来说应该没问题。

【讨论】:

  • 但是,请记住 UNION ALL 不会删除重复项。
  • @crazylpfan 如果表代表分区数据,则不应有任何重复。
  • @cdhowie 是的,这三个表是源表的分区(来源:oracle;Access 数据库是“数据容器”,分区成树以便能够更快地工作)。源数据没有重复字段。
【解决方案2】:

首先您需要知道是否要重复寄存器,如果是,请使用 UNION ALL,否则使用 UNION。 可能您必须从 ACCESS 更新统计信息以提高性能。 关于字段问题,您是不是使用了错误的名称来访问数据,请记住 UNION/UNION ALL 将第一个查询的字段名称用于结果表。

【讨论】:

  • 尝试使用 * 代替字段名称 judt 进行测试,也许您在选择时使用了太多字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-28
相关资源
最近更新 更多