У меня есть ситуация, когда требуется сопоставить более 25 000 уникальных CSV-файлов с базой данных MySQL.
Проблема в том, что каждый CSV-файл будет иметь уникальные заголовки столбцов, и, следовательно, требуется сопоставление столбцов для исправления таблиц / столбцов в базе данных MySQL.
Так, например, мы можем обнаружить, что столбец 2 в одном файле CSV - это Страна, но в другом файле CSV - это столбец 6. Или мы можем обнаружить, что Страна просто не существует в определенном файле CSV. Вы можете понять, почему ручное отображение столбцов для файлов размером 25 КБ нецелесообразно.
Причина, по которой требуется сопоставление, заключается в том, что нам нужна возможность выполнять поиск по всем файлам на основе предварительно определенной структуры.
Например, мы хотим найти туристические компании в Великобритании, в которых работает более 20 человек.
Нам нужна возможность выполнить этот запрос по всем данным в файлах, чтобы получить правильные результаты. Структура базы данных уже была определена и прекрасно разбиралась в csv-файлах, до сих пор мы только что поняли, что для этого сопоставления будет огромное количество csv-файлов.
Нам лучше с решением NoSQL? Вы бы порекомендовали что-то вроде Neo4j? Есть ли лучшее решение для сопоставления уникальных CSV-файлов со структурированной схемой MySQL?
Edit:
Сейчас я планирую, чтобы мы сначала проанализировали первую строку каждого файла и сохранили ее в новой таблице, связанной с файлом с отношением «многие ко многим».
Исходя из этого, пользователь сможет определить соответствующий столбец таблицы для столбца файла (так как я подозреваю, что большое количество столбцов будет практически одинаковым).
Затем сохраните эти данные сопоставления в файле и выполните автоматизированный процесс, затем выполните вставку на основе этого сопоставления.
Это должно уменьшить рабочую нагрузку от необходимости устанавливать сопоставление для каждого файла индивидуально, и вместо этого сосредоточиться на сопоставлении связанных столбцов во всех файлах. Это все еще будет тяжелая задача, хотя я представляю.
Спасибо