2016-05-09 21 views
1

Ich habe zwei MySql-Datenbank-Daten zu vergleichen, möchte ich zwei MySql-Schema vergleichen und den Unterschied zwischen beiden Schema herausfinden.Wie zwei MySql-Datenbank zu vergleichen

Ich habe zwei Variablen Old_Release_DB und New_Release_DB erstellt. In Old_Release_DB habe ich das alte Release-Schema gespeichert, als nach einigen Änderungen, wie ich einige Spalten gelöscht, einige Spalten hinzugefügt, einige Spalten umbenannt habe, die Spalteneigenschaft geändert habe, wie die Datentypgröße (zB: varchar (10) zu varchar (50)). Dann wurde es zu einem neuen Release-Schema, das ich in New_Release_DB gespeichert habe.

Jetzt möchte ich Tabellenname, Liste der Spalte Name, die in New_Release_DB geändert hat, und ändert sich mit Spaltenname.

Beispiel,

Table_A Column_Name hinzufügen (wenn es hinzugefügt wird), Table_A Column_Name Löschen (wenn es gelöscht wird), Table_A Column_Name ändern (wenn seine Eigenschaft geändert wurde)

ich es versuche, in Shell-Skript in Linux, aber ich verstehe es nicht. Bitte lass es mich wissen, wenn ich ein anderes Skript wie Python oder Java verwenden kann.

+1

Nehmen Sie einfach eine mysqldump der beiden Datenbanken und vergleichen Sie die 2 '.SQL-Dateien. Ich denke, das sollte Ihr Problem leicht lösen. – JRodDynamite

+0

SQLyog .. visuelle Daten vergleichen und Schema syc kann es tun. –

+0

Wie benutze ich mysqldump? – anika

Antwort

0

Sie können zwei Datenbanken vergleichen Datenbank erstellen Dumps: mysqldump -u your-Datenbank-Benutzer your-database-name> Datenbank-Dump-file.sql - wenn Sie ein Kennwort verwenden, um eine Datenbank zu verbinden, Fügen Sie einem mysqldump-Befehl auch die Option -p hinzu.

Und dann vergleichen sie mit diff: diff neu-Datenbank-Dump-file.sql old-Datenbank-Dump-file.sql Optional können Sie die Ergebnisse von diff Ausführung in eine Datei mit STDOUT Umleitung speichern, indem das Hinzufügen > Datenbanken_Diff zu einem vorherigen Befehl.

Allerdings würde diese Art von Vergleich einige Augenarbeit erfordern - Sie werden buchstäblich einen Unterschied zwischen zwei Dateien bekommen.

0

Ich benutze mysql Workbench, die das Schema-Synchronisationsprogramm hat. Sehr praktisch, wenn Sie versuchen, Änderungen vom Entwicklungsserver auf einen Produktionsserver anzuwenden.

1

Werfen Sie einen Blick auf mysqldiff

Es kann die nessecerary SQL-Anweisungen auch produzieren von einem System zum anderen (oder umgekehrt)

Die Dokumentation über den obigen Link gut ist eher zu konvertieren. Und loslegen ist so einfach wie:

mysqldiff [email protected] [email protected] test:test