środa, 8 stycznia 2014

Usprawnienie i poprawki w perl-owym skrypcie do porównywania mysql-owych baz danych

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:
  • 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 EXIST                                     
 Poró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