Как сравнить две таблицы и найти разницу между ними в Linux с помощью shell script?

Мне нужно сравнить две базы данных MySql, я хочу сравнить две схемы MySql и найти разницу между обеими схемами.

Я создал две переменные Old_Release_DB и New_Release_DB. В Old_Release_DB я сохранил старую схему релиза, которую после некоторой модификации удалил, добавил, переименовал, изменил свойства столбцов, например, увеличил размер типа данных (например, varchar(10) до varchar(50)). После этого получилась схема нового релиза, которую я сохранил в New_Release_DB.

Теперь я хочу, чтобы имя таблицы, список имен столбцов, которые изменились в New_Release_DB, и изменения вместе с именем столбца.

Пример,

Таблица_А Имя_столбца Добавить (если он добавлен), Table_A Column_Name Delete(если удален), Table_A Column_Name Change (если его свойство изменилось)

Я пробую это в Shell скрипте в Linux, но у меня не получается. Пожалуйста, дайте мне знать, могу ли я использовать другой скрипт, например, python или java.

0
09.05.2016, 10:52
2 ответа

Чтобы сравнить различия между схемами двух баз данных mysql из командной строки, вы можете использовать Пример использования mysqldiff

из документации

shell> mysqldiff --server1=root@localhost \
          employees.salaries:emp1.salaries --differ

# server1 on localhost: ... connected.
# Comparing employees.salaries to emp1.salaries                    [FAIL]
# Object definitions are not the same:
  CREATE TABLE `salaries` (
    `emp_no` int(11) NOT NULL,
    `salary` int(11) NOT NULL,
    `from_date` date NOT NULL,
    `to_date` date NOT NULL,
    PRIMARY KEY (`emp_no`,`from_date`),
    KEY `emp_no` (`emp_no`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1
?           ^^^^^
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin1
?          ++ ^^^
Compare failed. One or more differences found.

Если две базы данных не совпадают, утилита должна вернуть ненулевой код выхода, который вы можете включить в сценарий оболочки.
Для меня долгосрочным решением этой проблемы является то, что эта схема БД действительно должна иметь свою независимую систему управления версиями .

1
28.01.2020, 04:51

Вы, конечно, можете использовать бесплатное программное обеспечение Toad, в котором есть отличные возможности для сравнения баз данных, таблиц и схем.

Проверьте здесь https://www.toadworld.com/products/toad-for-sql-server

Мне это очень пригодилось.

1
28.01.2020, 04:51

Теги

Похожие вопросы