Ostatnio musiałam użyć swojego perl-owego skryptu do porównania dwóch baz mysql-owych. Opisałam go na tym blogu pod tym adresem tutaj.
Baza danych jednak okazała się bardzo duża, a zwracamy wynik bardzo nieczytelny, dlatego wprowadziłam następujące zmiany:
Przykładowy wynik porównania tabel:
Całość kodu dostępna jest na github-e pod adresem: https://github.com/eladulko/Compare-two-mysql-databases
Zachęcam Was do komitowania zmian i poprawek.
Baza danych jednak okazała się bardzo duża, a zwracamy wynik bardzo nieczytelny, dlatego wprowadziłam następujące zmiany:
- porównanie opcji tabel i sprawdzenie istnienia ich w formie tabelki
- porównanie cech kolumn i sprawdzenie istnienia ich w formie tabelki
- poprawka błędów (sprawdzenie czy tabela istnieje, pobieranie danych dla nie numerycznych kluczy głównych)
Przykładowy wynik porównania tabel:
Table Schema verification: START TABLE NAME |Server 01 (piwik_production_mirror) |Server 02 (piwik_upgrade_test) ------------------------------------------------------------------------------------------------------------------------------------------------------ piwik_archive_blob_2014_01 |BASE TABLE, InnoDB, Compact, utf8_general_ci |BASE TABLE, MyISAM, Dynamic, utf8_general_ci piwik_archive_numeric_2014_01 |BASE TABLE, InnoDB, Compact, utf8_general_ci |BASE TABLE, MyISAM, Dynamic, utf8_general_ci piwik_archiving_process |DOESN'T EXIST |BASE TABLE, MyISAM, Fixed, latin1_swedish_ci piwik_archiving_sequence |BASE TABLE, MyISAM, Fixed, latin1_swedish_ci |BASE TABLE, MyISAM, Fixed, utf8_general_ci piwik_archive_blob_2009_01 |BASE TABLE, MyISAM, Dynamic, utf8_general_ci |DOESN'T EXISTPorównanie kolumn także jest teraz przejrzystsze:
Columns Schema verification: START TABLE NAME |COLUMN NAME |Server 01 |Server 02 piwik_access |show_site |Def: tinyint(1), Default: 1, IsNull: NO |Def: tinyint(1), Default: 1, IsNull: NO piwik_access |login |Def: varchar(100), Default: , IsNull: NO |Def: varchar(255), Default: , IsNull: NO piwik_archive_blob |idsite |Def: int(10) unsigned, Default: 0, IsNull: NO |Def: int(10) unsigned, Default: , IsNull: YES piwik_archive_blob_2014_01 |idsite |Def: int(10) unsigned, Default: 0, IsNull: NO |Def: int(10) unsigned, Default: , IsNull: YES piwik_goal |allow_multiple |- |Def: tinyint(4), Default: , IsNull: NO piwik_goal |deleted |Def: tinyint(4), Default: 0, IsNull: NO |Def: tinyint(4), Default: 0, IsNull: NO piwik_goal |revenue |Def: float, Default: , IsNull: NO |Def: float, Default: , IsNull: NO piwik_log_link_visit_action |idaction_url |Def: int(10) unsigned, Default: , IsNull: NO |Def: int(10) unsigned, Default: , IsNull: NO
Całość kodu dostępna jest na github-e pod adresem: https://github.com/eladulko/Compare-two-mysql-databases
Zachęcam Was do komitowania zmian i poprawek.
Brak komentarzy:
Prześlij komentarz