Есть ли способ просмотра запроса на экспорт, выполняемого PHPMyAdmin для базы данных? - PullRequest
0 голосов
/ 08 марта 2020

Я столкнулся со сравнением структур нескольких баз данных - но не баз данных в целом, только таблиц, которые они все объединяют. Я могу экспортировать их структуру через интерфейс, но каждый раз приходится кликать по списку таблиц, чтобы определить, что я хочу экспортировать. Есть ли способ получить доступ к экспортным запросам, выполняемым PHPMyAdmin, чтобы просто копировать-вставлять каждый раз?

Ответы [ 2 ]

2 голосов
/ 08 марта 2020

phpMyAdmin 4.5.0+ поддерживает шаблоны экспорта. На экране экспорта вы можете создать шаблон экспорта с нужными вам настройками. Они для каждого сервера, но мы можем что-то с этим сделать.

По умолчанию (это можно настроить в конфигурационном файле PMA), PMA сохраняет эти шаблоны экспорта в базе данных phpmyadmin и таблице pma__export_templates.

При условии, что у вас есть полный доступ ко всем базам данных на ваших серверах, включая phpmyadmin, вы можете сделать это:

  • Создать шаблон экспорта с нужными настройками на одном серверов
  • Экспорт сам шаблон экспорта из таблицы phpmyadmin.pma__export_templates.
  • Импорт шаблона в phpmyadmin.pma__export_templates на следующем сервере.
  • Go там на экран экспорта и загрузите шаблон.
0 голосов
/ 08 марта 2020

Вы можете использовать mysqldump --no-data, если хотите экспортировать только метаданные.

Я сделал это на днях для разработчика в моей компании, который был озадачен тем, что промежуточный экземпляр их базы данных каким-то образом отличается от производственный экземпляр.

Я запустил:

mysqldump --no-data --skip-add-drop-table --skip-add-locks -h $staging_host > staging-dump.sql
mysqldump --no-data --skip-add-drop-table --skip-add-locks -h $prod_host > prod-dump.sql

Это выдает только операторы CREATE TABLE. Он пропускает любые операторы INSERT, которые содержат содержимое данных таблиц. Есть также некоторые комментарии и некоторые безобидные вещи о наборах символов. Игнорируйте их.

Я редактировал каждый файл в vim, чтобы удалить параметры AUTO_INCREMENT из каждого создания таблицы. Конечно, они будут другими, если количество строк в таблицах будет другим. Вот команда vim:

:%g/AUTO_INCREMENT=[0-9]* /s/// 

Затем укажите файлы рядом друг с другом:

diff -y staging-dump.sql prod-dump.sql > diff

В выходных данных файлы отображаются рядом друг с другом (хотя бы столько же) как это может отображаться), с односимвольным столбцом, бегущим по середине между ними. Средний столбец будет иметь | для обозначения линий, которые отличаются, или < для обозначения строк, которые существуют только в первом файле, или > для обозначения строк, которые существуют только во втором файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...