#python #mysql #sqlalchemy #foxpro #data-cleaning
#python #mysql #sqlalchemy #foxpro #очистка данных
Вопрос:
У нас есть куча утилит в Visual FoxPro, которые мы используем для интерактивной очистки / форматирования данных. Мы хотели бы начать перенос этого кода для использования других платформ баз данных, таких как MySQL или SQLite.
Например, у нас есть скрипт, который мы запускаем, который преобразует строки имени и / или адреса в правильный верхний / нижний регистр. Этот код просматривает всю таблицу и анализирует / исправляет каждую строку. Есть и другие, которые выполняют такие вещи, как синтаксический анализ и стандартизация адреса и даже обнаружение дубликатов…
Мы думаем о переносе кода на Python и, возможно, использовании чего-то вроде SQLAlchemy в качестве «посредника».
В Visual FoxPro база данных / таблицы интегрированы, поэтому мы можем просто открыть таблицу и выполнить команды. MySQL отличается тем, что нам нужно извлечь из него данные, затем поработать с этими извлеченными данными, а затем обновить таблицу.
Какой подход был бы наилучшим?
Я вижу несколько возможностей:
1) Извлеките весь набор данных, с которым нужно работать, скажем, все поля адресов, если это то, с чем мы собираемся работать, затем обновите все это и запишите все обратно…
2) Извлеките набор данных по частям, чтобы потенциально не потреблять огромные объемы системной памяти … затем обновите и запишите обратно
3) Сгенерируйте SQL-код, возможно, с помощью такого инструмента, как SQLAlchemy, который отправляется и выполняется сервером…
4) ??? Что-нибудь еще, о чем я не подумал?
Ответ №1:
Похоже, вы пытаетесь сделать несколько вещей одновременно. Не могли бы вы использовать пошаговый подход? Возможно, очистка данных в том виде, в каком они есть сейчас, с использованием ваших обычных, обычных скриптов. Затем перенесите базу данных в MySQL.
Перенести базу данных легко, если VisualFoxPro предлагает способ экспорта базы данных, скажем, в CSV. Затем вы можете импортировать этот CSV-файл непосредственно в MySQL без особых проблем. Это дает вам две базы данных, которые должны быть функционально идентичными. Конечно, вы должны доказать, что они действительно идентичны, что не слишком сложно, но отнимает много времени. Возможно, вы сможете использовать SQLAlchemy, чтобы помочь.
Когда база данных MySQL подходит, самое время перенести ваши сценарии очистки на Python или что-то в этом роде и заставить их работать.
Вот как я бы подошел к этой проблеме: разбейте ее на части и не пытайтесь делать слишком много за один шаг.
HTH
Комментарии:
1. Вы, конечно, можете экспортировать в CSV с помощью VFP. СКОПИРУЙТЕ В myfile.csv ВВЕДИТЕ CSV
2. Спасибо за ответ. Получение данных в MySQL на самом деле не проблема. Это то, как мне лучше всего манипулировать данными, когда они есть. Каков наилучший подход для выполнения массовых обновлений / изменений данных в MySQL или SQLite или в любом другом бэкэнде данных, если на то пошло.
3. Одной из возможностей было бы создать удаленный SQL-просмотр в базе данных MySQL / SQLite в VFP, а затем выполнить цикл внесения изменений, вызывая TableUpdate по мере необходимости.