Мне нужно выполнить очень перенос. Это невозможно сделать с помощью SQL, я должен использовать Java. И я обрабатываю каждую строку отдельно, громоздкое обновление невозможно. Чтобы усложнить ситуацию: у одного из моих клиентов несколько миллиардов строк в таблице, у других клиентов всего пара сотен. Если я попытаюсь перенести большую таблицу базы данных, я обязательно столкнусь с проблемами памяти. В какой-то момент память транзакций заканчивается.
Что мне нужно, так это мигрировать по блокам и несколько раз вызывать шаг миграции. В идеале моя реализация JdbcMigration
могла бы возвращать в систему пролетного пути информацию типа "Я еще не закончил, пожалуйста, позвоните мне еще раз" или "Я закончил, вы можете перейти к следующему шагу миграции". Если бы у меня была эта функция, я бы обработал, например, до 1 миллиона записей и позволил бы flyway зафиксировать транзакцию. И я бы повторял это до тех пор, пока есть необработанные записи.
К сожалению, метод migrate(Connection)
из JdbcMigration
имеет возвращаемый тип void. Есть ли способ дать flyway такой ответ?
С уважением, Кристиан