Имам MySQL база данни на сървър #1 и трябва да я мигрирам към сървър #2. Базата данни е много голяма и методи като mysqldump или MySQL Workbench Migration не работеха за мен, така че исках да напиша мое собствено Java приложение, което да изпълнява следните стъпки:
- вземете всички имена на таблици от схемата на изходната база данни
- за всяка таблица ще избере партида от записи (да кажем 10 000 наведнъж) и ще ги вмъкне в съответната таблица в целевата база данни. Схемата вече е подготвена с правилно дефинирани таблици.
- повторете, докато не останат редове за текущата таблица.
- повторете за всяка маса.
Проблемът е, AFAIK, когато се използва JDBC, е необходимо да се премине през ResultSet и да се уточнят всички типове и имена на колони, като това:
while (resultset.next()) {
System.out.println(resultset.getString("Col 1"));
System.out.println(resultset.getString("Col 2"));
System.out.println(resultset.getString("Col 3"));
System.out.println(resultset.getString("Col n"));
}
Искам да направя това за всички таблици и всичките им колони, без да посочвам техните имена и типове ръчно. Не мога просто да напиша ръчно всички тези колони, тъй като имам 150 таблици и всяка от тях има около 10-50 колони.
Има ли някакъв общ начин как да направите това? Може би да се възползвате от факта, че схемите на източника и местоназначението са еднакви (едни и същи таблици с едни и същи имена/типове на колони и едни и същи външни ключове)?