как синхронизировать входящий XML-файл с существующими данными MySQL - PullRequest
0 голосов
/ 19 ноября 2011

Поставщик предоставляет XML-файл объемом 1 МБ, который обновляется каждую минуту.Мне нужно каждую минуту обновлять свою базу данных этой информацией для достижения наилучших результатов.

Файл XML представляет собой простую структуру плоской таблицы, которую я продублировал в mysql.

Моя таблица mysql содержит больше данныхчем файл XML (больше строк и больше столбцов) ... Моя информация должна оставаться постоянной, несмотря на обновления данных поставщиками.

И у XML, и у таблицы MySQL один и тот же ключ, поэтому существует четкий путьчтобы выполнить это обновление с помощью пользовательского кода ...

Мой вопрос: существуют ли библиотеки или инструменты, которые будут обрабатывать большую часть этого ...

Например: * MySQL functions * PHPили библиотеки Perl.

Я попытался немного погуглить ... но мои ключевые слова "mysql", "parsing", "xml" настолько распространены, что я получаю много-много разных результатов.... Идеи по улучшению условий поиска также приветствуются.

Ответы [ 2 ]

2 голосов
/ 19 ноября 2011

Когда вы говорите, что вы «продублированы в mysql», вы имеете в виду, что вы сохранили весь XML-файл как есть в столбце таблицы mysql?Если это так, вы можете попробовать использовать MySql XML-функции в хранимой процедуре для обработки данных XML.

Но, вероятно, было бы намного проще использовать PHP SimpleXML * 1006.*.Вы читали файл с помощью PHP, просматривали данные в структуре SimpleXML для извлечения данных, которые хотите обновить, и затем использовали их, чтобы ваш PHP обновлял соответствующие строки в вашей таблице MySQL.

1 голос
/ 19 ноября 2011

Данных не так много, поэтому использование XML::Simple не приведет к чрезмерному потреблению памяти.Он работает путем преобразования данных XML в хеш, который затем можно использовать для заполнения БД.

Для доступа и обновления БД MySQL используйте DBI в сочетании с сгенерированным хешем.XML::Simple.

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