Aby zautomatyzować proces tworzenia kopii zapasowej jednej z moich baz danych MySQL, chciałbym porównać strukturę dwóch tabel (bieżąca wersja ze starą wersją).
Czy potrafisz wymyślić zapytanie, które może porównać dwie tabele?
Oto kilka przykładowych tabel, które możesz porównać.
CREATE TABLE product_today
(
pname VARCHAR(150),
price int,
PRIMARY KEY (pname)
);
CREATE TABLE product_yesterday
(
pname VARCHAR(150),
price int,
PRIMARY KEY (pname)
);
CREATE TABLE product_2days_back
(
pname VARCHAR(15),
price int,
PRIMARY KEY (pname)
);
Pierwsze dwie tabele mają identyczne struktury. Ostatni jest inny. Muszę tylko wiedzieć, czy dwie tabele mają różne struktury, czy nie. Nie interesuje mnie ich różnica.
Odpowiedzi:
DWA STOŁY W BIEŻĄCEJ BAZY DANYCH
Jeśli chcesz wiedzieć, czy dwie tabele są różne, uruchom to
Jeśli naprawdę potrzebujesz zobaczyć różnice, uruchom to
DWA STOŁY W SZCZEGÓLNEJ BAZIE DANYCH
Jeśli chcesz wiedzieć, czy dwie tabele różnią się w bazie danych
mydb
, uruchom toJeśli naprawdę potrzebujesz zobaczyć różnice, uruchom to
DWA STOŁY W DWÓCH RÓŻNYCH BAZACH DANYCH
Jeśli chcesz wiedzieć, czy
db1.tb1
idb2.tb2
jesteś inny, uruchom toJeśli naprawdę potrzebujesz zobaczyć różnice, uruchom to
SPRÓBUJ !!!
źródło
Możesz porównać sumę kontrolną danych wyjściowych SHOW CREATE TABLE product_today
źródło
Rozwijając odpowiedź RolandoMySQLDBA:
Aby zobaczyć również nazwę tabeli, zapytaj:
źródło
Spójrz na tabelę kolumn w schemacie_informacyjnym - pole typ_kolumny. To pozwoli ci porównać struktury tabel.
źródło
Mój najlepszy sposób porównywania 2 baz danych (DB1, DB2) - tylko tabele / widoki, ograniczenia i klucz obcy nie są uwzględnione. W moim przypadku zawsze używam następującego SQL do porównania PRODUKCJI z UAT lub UAT z DEV.
DB DIFF (porównaj tabele / widoki)
źródło
dla wszystkich zmian w strukturze tabeli dwóch baz danych:
Ref .: od RolandoMySQLDBA ans
źródło