【问题标题】:Structure for mysql database with access front-end带有访问前端的mysql数据库的结构
【发布时间】:2010-12-09 17:29:19
【问题描述】:

我有一个收集大量信息的服务器。现在每个月都有一个数据库,每个月的每一天都有一个表。通常每天大约有 200,000+ 行(一个表大约 150MB)。

在另一篇文章中,有人建议我每月只使用一张表,以便更轻松地操作数据。这并不难,因为所有条目都有日期\时间戳。

问题是我们必须使用 MS Access 前端,并且数据没有链接,而是每天导入以进行修订。这与自动连接到正确数据库和表的 VBA 脚本配合得很好。

sConnect = "ODBC;Driver={MySQL ODBC 5.1 Driver};" & _
  "SERVER=172.16.0.0;" & _
  "PORT=3306;" & _
  "DATABASE=" & "Mon" & dbMonth & ";" & _
  "USER=USER;" & _
  "PASSWORD=PASS;"

DoCmd.TransferDatabase acImport, "ODBC Database", _
  sConnect, acTable, "Data" & dbDay, "Revise", , True

有没有人建议一种快速简便的方法来自动从包含超过 600 万个条目的数据库中导入当天的信息?现在,通过 LAN 导入一天的数据大约需要 20 秒。

谢谢!

【问题讨论】:

  • 您会注意到,每个答案都提出了相同的问题,即,为什么您认为需要将其导入表中,而不仅仅是链接到原始数据源。不导入的一个原因是 Jet/ACE 对文件大小有 2GB 的限制,并且每天有 20 万条记录,除非它们是极窄的记录(即少数具有紧凑数据类型的列),否则您很容易超出容量Jet/ACE 可以在不太长的时间内存储这么多的数据。也许您没有正确索引 MySQL 中的表。

标签: mysql database ms-access vba data-structures


【解决方案1】:

我想到的一个问题是,您为什么要像这样分离您的信息 - 为什么不简单地为条目添加时间戳,然后将其全部转储到一个数据库中以进行处理。更容易跟踪、维护、备份和恢复——然后只需编写你的 VBA 来获取适当的记录供你的前端修改,一旦你的修改完成后将它们推回到那个数据库中的表中——也许检查一个“已修订”复选框,表示下次不应该取消这些(如果我正确理解目的)。

另一个是你为什么不想链接到数据库,或者至少是数据库的视图?

我在这里还是个新手,所以也许我的问题没有看到更大的担忧 - 如果是这样,我也很想得到启发。

【讨论】:

  • 我对使用 mysql 也很陌生。情况有点复杂,因为我们需要将数据导入表中,而不仅仅是链接。我不确定如何将仅一天的记录导入到 Access 表中。也许我可以链接它而不是导入并使用 VBA 生成一个查询来创建一个新表,但这似乎有点复杂。
  • 但问题是WHY您认为您需要导入它,而不仅仅是链接?
  • 有点傻,使用 Access 界面的人对计算机不是很好,并且已经习惯了 access 的功能,它提供了一个复选框列表,您可以看到显示所有可用值的过滤数据表时的列。问题是当我从链接表中获取数据时,这对我的查询不可用。仅当它是导入表时才有效。我认为不导入数据就无法解决这个问题。
  • 那么,换句话说,您正在围绕 Access UI 设计您的数据库?这对我来说似乎倒退了!
【解决方案2】:

我会坚持在 MySQL 中使用一个表并添加一个默认为 CURRENT_TIMESTAMP 的时间戳字段,以便 MySQL 自动填充此时间戳字段。

然后,一个简单的查询可以返回一个月的记录,您可以将其附加到临时 (?) 表中。

不过……

我们需要将数据导入 一个表格,而不仅仅是链接

你确定你真的需要这样做吗?如果您通过 vba 进一步处理每条记录,您能否在原始 MySQL 表中不包含任何附加信息作为额外字段?

【讨论】:

  • 谢谢,麦克斯胡根。我在上面的评论中解释了这种情况。也许你有一个建议。
  • 我使用一个主表单,一个连续表单子表单,以及一个带有过滤器字段的单独子表单。这些过滤器字段可以是组合,填充适当的值。然后,实际的 [Filter] 按钮可以使用 WHERE 子句修改原始 SQL,或者使用连续表单子表单的 Filter 属性。 HTH。
【解决方案3】:

我会将所有数据放入一个表中,创建链接而不是从 VBA 导入和生成查询。是的,前期可能有点复杂,但在我看来,这是最容易继续使用和维护的。

我们有 MySql、Access 数据库、Access 表单、VB6 和 VB.Net 的 mixin。使用所有这些技术是一件痛苦的事。我已经对应用程序做了足够多的工作,知道单个表格和重新链接是您最好的选择。

【讨论】:

    【解决方案4】:

    好吧,我要重构数据库,因为我发现 Access 有一种“隐藏”的方式来从链接表中填充过滤列表。在数据库选项中,您可以告诉它也将 ODBC 用于过滤器列表。很难找到,我什至不认为它可以做到。现在我有更多选择,因为我可以链接表格。

    感谢所有试图提供帮助的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 2012-12-15
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多