Я получил некоторые данные в трех отдельных файлах csv, которые необходимо импортировать в базу данных MySQL. Итак, я получил три маршрута верблюда, каждый из которых читал из файла, а затем вставлял/обновлял БД.Apache camel синхронизирует маршруты файлов
Один из этих трех файлов содержит вставленные наборы данных, а два других - обновляют данные из первого, который только что вставлен.
CSV-File-1 -> INSERT INTO table (id,...) VALUES ($id,...)
CSV-File-2 -> UPDATE table SET field = $value WHERE id = $idFromTheJustInsertedDataset
CSV-File-3 -> UPDATE table SET field = $value WHERE id = $idFromTheJustInsertedDataset
(идентификатор здесь не auto_increment номер, который генерируется из MySQL)
Сейчас проблема заключается в том, что, когда маршрут один, чтобы вставить данные не запускалась до 2 других данных теряется, потому что я не 't получить любую ошибку из mysql (id просто не существует, потому что он еще не вставлен - запрос по-прежнему действителен).
Так что потребитель файла верблюда запускается каждые xxx миллисекунды, и я не знаю никакой возможности определить, в каком порядке должны выполняться эти три маршрута. Также невозможно использовать другой файл (один раз) внутри маршрута - по крайней мере, я не могу понять, как это можно сделать.
Кто-нибудь знает, как я мог синхронизировать эти маршруты?
Именно это моя проблема: как я могу гарантировать, что маршрут, который вставляет данные, выполняется до запуска одного из двух других маршрутов? Все три маршрута должны были считываться из файла, и единственный способ запустить их afaik - использовать « » и таким образом нет контроля над этим –
Milla
. Я думаю, что самый простой путь состоит в том, чтобы иметь две партии. Первый содержит каталог со всеми данными для вставки и удаления или перемещения данных после обработки. Вторая партия запускается автоматически, когда в предыдущем каталоге больше нет данных. – Aurelien