У меня есть задача сравнить экспорт оракула (CSV-подобный формат, но не запятую как разделитель) с экспортом neo4j.
Один файл CSV-файла оракула (может иметь миллионы строк) имеет вид:
OBJECT_ID|'¦'|NAME|'¦'|SITE_LOCATION|'¦'|PARENT_ID|'¦'|LOCATION_CODE
9144735089013188062|¦|00|¦|9144735080313909184|¦|9144735085613119290|¦|O2GB
Здесь OBJECT_ID является уникальным и данные сортируются по нему.
- Теперь мой первый подход состоял в том, чтобы создать из cypher db аналогичный csv с использованием некоторого сохранения кода Java в
Map<String, Map<String, String>>
Переменные результаты запроса шифра, как:
{"loc1" = {ObjectId = "9144735079813886326", NAME = "locationName", SITE_LOCATION = "Location", ParentId = "9144735080313909184"}, "loc2" = {ObjectId = "9144735079813886326", NAME = "locationName", SITE_LOCATION = "Location", ParentId = "9144735080313909184"}}
и экспортируйте его в csv.
Затем я должен загрузить оба csvs обратно в java, чтобы сравнить их и создать какой-то отчет, в котором мне нужно указать имя ключа, если значение из 2 csvs не совпадает.
Второй подход, который я могу придумать, это загрузить oracle csv в
Map<String, Map<String, String>>
или некоторый тип данных и сравнить его с моими результатами шифрования, пропуская преобразование neo4j в csv.
Будет ли этоможно было загружать параллельно из каждой CSV построчно в аналогичную карту чего-либо без необходимости загружать оба CSV в одно и то же время в память?
Как лучше всего это сделать?