Структура базы данных mysql с интерфейсом доступа - PullRequest
1 голос
/ 09 декабря 2010

У меня есть сервер, который собирает много информации.Прямо сейчас есть база данных для каждого месяца и таблица для каждого дня месяца.Обычно существует около 200 000 строк в день (около 150 МБ на таблицу).

В другом посте кто-то предложил мне использовать одну таблицу в месяц, чтобы было проще манипулировать данными.Это не будет сложно, так как все записи имеют метку даты \ времени.

Проблема в том, что мы должны использовать интерфейс 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

У всех есть предложения по быстрому и простому способу автоматического импорта только информации за день из базы данных, которая имеетмиллион + записей?Сейчас для импорта данных за один день требуется около 20 секунд по локальной сети.

Спасибо!

Ответы [ 4 ]

1 голос
/ 09 декабря 2010

Я бы поместил все данные в одну таблицу, вместо импорта создал бы ссылку и сгенерировал бы ваш запрос из VBA. Да, это может быть немного сложно заранее, но, на мой взгляд, проще всего продолжать работать и поддерживать.

У нас есть смеси MySql, базы данных Access, форм доступа, VB6 и VB.Net. Трудно работать со всеми этими технологиями. Я сделал достаточно с приложениями, чтобы знать, что единственная таблица и повторное связывание - ваш лучший выбор.

1 голос
/ 10 декабря 2010

Я бы придерживался одной таблицы в MySQL и добавил бы поле отметки времени со значением по умолчанию CURRENT_TIMESTAMP, чтобы MySQL автоматически заполнил это поле отметки времени.

Простой запрос может затем вернуть записи за один месяц, которые вы можете добавить в таблицу temp (?).

Однако ...

нам нужно импортировать данные в таблица, а не просто связанная

Вы уверены, что действительно нужно сделать это? Если вы продолжаете обрабатывать каждую запись с помощью vba, не можете ли вы включить дополнительную информацию в качестве дополнительных полей в исходную таблицу MySQL?

1 голос
/ 09 декабря 2010

Один вопрос, который приходит мне в голову, заключается в том, почему вы так отделяете свою информацию - почему бы просто не поставить отметки времени в записях и не свалить их все в одну базу данных для работы.Гораздо проще отслеживать, поддерживать, создавать резервные копии и восстанавливать - тогда просто напишите свой VBA, чтобы выбрать нужные записи для вашего внешнего интерфейса, чтобы пересмотреть их, подтолкнув их обратно к таблице в этой одной базе данных, как только ваши ревизии пройдут - возможно, проверка«Пересмотренный» флажок, указывающий, что их НЕ следует извлекать в следующий раз (если я правильно понимаю цель).

Другой вопрос, почему вы не хотите ссылаться на базу данных или, по крайней мере, просматриватьбаза данных?

Я все еще немного новичок здесь, поэтому, возможно, есть более серьезные проблемы, которые я не вижу с моими вопросами - и если так, я бы тоже хотел быть просветленным.

0 голосов
/ 13 декабря 2010

Что ж, я собираюсь реструктурировать базу данных, потому что я обнаружил, что в Access есть «скрытый» способ заполнения списка фильтрации из связанных таблиц. В опциях базы данных вы можете указать, чтобы он также использовал ODBC для списков фильтров. Его было трудно найти, и я даже не думал, что это можно сделать. Теперь у меня намного больше возможностей, потому что я могу просто связать таблицы.

Спасибо всем, кто пытался помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...