2010-12-09 69 views
1

我有一个收集大量信息的服务器。现在每个月都有一个数据库,每个月的每一天都有一张表。通常每天大约有200,000多行(大约150MB一张表)。具有访问前端的mysql数据库的结构

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

问题是我们必须使用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 

任何人有一个建议,一个快速&简单的方法来自动导入只是一天的从有6个亿多条目的数据库信息?现在,局域网上需要20秒才能导入一天的数据。

谢谢!

+0

您会注意到,每个答案都提出了同样的问题,即为什么您认为需要将其导入到表中而不是链接到原始数据源。不导入的一个原因是,Jet/ACE对文件大小有2GB的限制,并且每天有200K条记录,除非它们是非常狭窄的记录(即少数几列具有紧凑数据类型的记录),您可以轻松地超过容量Jet/ACE在不太长的一段时间内存储该数据量。也许你没有在MySQL中正确索引你的表。 – 2010-12-10 04:00:05

回答

0

好吧,我打算重组数据库,因为我发现Access有一种“隐藏”的方式来从链接表中填充过滤列表。在数据库选项中,您可以告诉它也使用ODBC作为筛选器列表。这是很难找到&我甚至没有想到它可以完成。现在我有更多的选择,因为我可以链接表。

谢谢所有试图帮助的人。

1

进入我脑海的一个问题是,为什么你要像这样分离你的信息 - 为什么不简单地为时间戳记条目,并将其全部转储到一个数据库中去处理。更容易跟踪,维护,备份和恢复 - 然后只需编写VBA为您的前端获取适当的记录进行修改,并在修改完成后将其推回到该数据库中的表格 - 可能会检查一个'修正'复选框,以表明这些不应该被下拉(如果我正确理解目的)。

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

我在这里还是有点新的,所以也许有更大的担忧,我没有看到我的问题 - 如果是的话,我也很想开悟。

+0

我对使用mysql也很新颖。这种情况有点复杂,因为我们需要将数据导入到表中,而不仅仅是链接。我不知道如何从只有一天导入到Access表中获取记录。也许我可以链接它而不是导入,并用VBA生成一个查询来创建一个新表,但这看起来有点复杂。 – Nathan 2010-12-09 18:43:05

+0

但问题是*为什么*你认为你需要它导入,而不仅仅是链接? – 2010-12-10 03:58:12

1

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

我们有MySql,Access数据库,Access窗体,VB6和VB.Net的mixins。与所有这些技术合作是一件痛苦的事情。我对这些应用程序做了足够的了解,知道单个表格和重新链接是您最好的选择。

1

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

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

但是......

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

你确定你真的需要做到这一点?如果您通过vba进一步处理每条记录,您是否可以不在原始MySQL表中包含额外信息作为额外字段?