Конвертировать данные из xml в mysql + автообновление
Есть база данных ФИАС - https://fias.nalog.ru/updates
Нужно создать скрипт, переводящий данные из xml в mysql таблицы (их тоже нужно создать). + скрипт обновления данных (он должен запрашивать данные (есть api) раз в день и если данные во внешней БД обновились - обновлять нашу Mysql базу). Если формат (структура таблиц или сами таблицы) поменяются и автообновление станет невозможно - скрипт должен сообщить об этом мне на почту.
Подробное комментирование кода приветствуется!
После реализации проверить целостность, что все связи таблиц соответствуют. Все данные должны соответствовать типам полей, в которые они будут помещены.
Файлы весят 70Гб после распаковки. Могу заказать сервер для работы на нём, но нужно будет установить необходимое окружение.
Помощь: уже кто-то реализовывал подобный экспорт, можно подсмотреть https://www.sql.ru/forum/1190752/import-bd-fias-v-mysql-prakticheskiy-opyt
Но на официальном https://fias.nalog.ru/Updates пишут, что с 2016 года что-то поменялось
Подытожу, что в итоге должно получиться:
Консольный скрипт, которому указываем url-ссылку на архив полной БД ФИАС в zip формате и запускаем через консоль. Он сначала скачивает zip файл, потом распаковывает всё во временную папку и экспортирует xml файлы в соответствующие таблицы (проверяет, что не появилось дополнительных xml файлов, если появились - сообщает об этом и останавливается). После экспорта скрипт проверяет целостность данных. Если в процессе происходит какая-то ошибка, скрипт сообщает об этом и останавливается.
Второй скрипт каждый день в 2 ночи по cron запускается и запрашивает по api информацию об обновлении БД ФИАС. Если обновления появились - обновляет данные mysql и сообщает на почту об удачном завершении работы. Если в процессе какая-то ошибка - сообщает на почту об ошибке. Если в обновлениях есть файлы, которые не использовались - тоже сообщение на почту.
Реализовать можно на Go, Php, laravel или предложите свой вариант.
Предлагайте цену и сроки. Расскажите немного, был ли подобный опыт или с чем работали. Если есть вопросы, задавайте.