Синхронизация БД доступа и MySQL - PullRequest
4 голосов
/ 20 июня 2010

У меня есть клиент, у которого очень большая внутренняя система, использующая Access, которая используется для обработки практически всех данных компании. Им нужен веб-интерфейс для данных о клиентах в этой базе данных, и они будут работать на другом сервере. Учитывая ограничения на доступ, клиентский интерфейс, скорее всего, будет использовать MySQL.

Что оставляет проблему синхронизации данных. Это не должно быть с точностью до секунды, даже ежедневно было бы хорошо, но я действительно не уверен в хорошем способе сделать это.

Учитывая область применения существующей системы, было бы непропорционально много времени и усилий для перемещения всей системы в другую базу данных, такую ​​как MySQL.

Есть ли практический способ сделать это?

Ответы [ 4 ]

3 голосов
/ 21 сентября 2012

мои шаги по «синхронизации» больше похожи на сверхбыстрое резервное копирование

1.- в windows преобразуйте вашу базу данных с помощью этого

http://www.bullzip.com/products/a2m/info.php

быстро конвертирует большую часть базы данных в YOURDATABASE.sql

2.- в Linux (я использую Ubuntu)

так как вы должны делать это часто, я рекомендую скрипт для исправлений.

пример моего:

#!/bin/bash
#edita tablas
szAnswer=$(zenity --title="YOURDATABASE" --entry --text "some text" --entry-text "");
fromdos $szAnswer;
sed -i 's/DATETIME\ DEFAULT\ .*/DATE,/g' $szAnswer;
sed -i 's/DATETIME/DATE/g' $szAnswer;
sed -i 's/FLOAT/DECIMAL(10,2)/g' $szAnswer;
sed -i 's/(NULL,/(\ ,/g' $szAnswer;
sed -i 's/ NULL);/\ );/g' $szAnswer;
sed -i 's/,\ NULL,/,\ ,/g' $szAnswer

Программа zenity по умолчанию в Ubuntu вам нужен "fromdos" для возврата каретки в windows

тогда: 3.- mysql -u theuser -pthepass

mysql> source YOURDATABASE.sql

и вы закончите через 5 минут.

2 голосов
/ 20 июня 2010

Из Access можно довольно легко скопировать содержимое, например, с помощью кнопки, которая выполняет запрос SQL, который копирует данные в базу данных MS-SQL в Интернете.

Я бы не стал использовать MySQL, если в этом нет необходимости, так как это приводит к проблемам с кодировкой символов, более разумно копировать в MS-SQL.

Будьте очень осторожны, конечно, выу нас будет 3 системы: 1 система доступа, 1 веб-система и 1 система для копирования данных.Этот сценарий и представляет более высокие затраты на техническое обслуживание.

1 голос
/ 21 июня 2010

Если веб-база данных доступна в локальной сети, где находятся пользователи Access, было бы более целесообразно увеличить размер серверной части до базы данных сервера и иметь единую базу данных. Но, скорее всего, это не так, поскольку веб-сервер, вероятно, не является локальным (и это, как правило, хорошо).

Если я понимаю ваши комментарии, это четкие отношения «ведущий / ведомый», при этом база данных Access является ведущей, а база данных веб-сайта - ведомой. В этом случае вы сможете просто регулярно заменять базу данных сайта. Есть несколько способов сделать это:

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

  2. если вы не можете получить прямое соединение с удаленной базой данных, то один из вариантов - запустить локальный экземпляр MySQL, экспортировать в it , а затем вывести базу данных в сценарий SQL, загрузить это на веб-сайт и запустить его, чтобы заменить существующую базу данных. Я сделал это, и это не так сложно, как кажется. Если его не нужно автоматизировать, проще всего установить phpMyAdmin на обоих концах и использовать его. Если это нужно автоматизировать, это другая проблема, и я не знаю команд MySQL, но я уверен, что не так сложно найти команды.

1 голос
/ 21 июня 2010

Я бы попросил опытного разработчика Access увеличить приложение Access, чтобы использовать SQL Server Express для данных вместо MySQL.Я бы предпочел SQL Server Express, а не MySQL: скорее всего, он лучше работает с Access, и вы, скорее всего, найдете потерянную онлайн-поддержку комбинации MS Access и SQL Server, чем MS Access и MySQL.

Эта работа может занять несколько недель или более для опытного человека.И, конечно, чем больше система, тем дольше это займет.

Один из факторов заключается в том, хочет ли клиент передавать данные с веб-сайта в базу данных или просто публиковать данные в Интернете?Если бы просто публиковать в Интернете, то предложение об обновлении веб-базы данных с помощью запросов может сработать.Если оба варианта начнут усложняться, то в будущем лучше использовать SQL Server.

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