Назад | Перейти на главную страницу

Средство просмотра дампа MySQL

Я пользователь Linux, но в офисе мне предоставляется ноутбук с Windows. Я мог бы запустить небольшой веб-сервер с помощью PHPmyadmin или даже загрузить его в удаленную систему и импортировать в базу данных, однако для того, что я делаю, я хотел бы знать, есть ли что-нибудь попроще?

У меня есть файл дампа MySQL базы данных. Мне нужно знать, есть ли что-нибудь, что можно прочитать в файле дампа MySQL, а затем позволить мне выполнять выборки (для поиска данных) без необходимости иметь фактическую базу данных MySQL. Почти как виртуальная база данных MySQL в виде файлов. По сути, я пытаюсь создать перекрестные ссылки на данные, и я не хочу создавать новую базу данных, выполнять импорт, а затем читать такие данные. Я сделаю это, если придется, но мне просто интересно, есть ли какая-то программа, которая будет читать мой файл дампа и позволять мне просто просматривать его, как если бы я был подключен к базе данных.

Есть несколько инструментов для просмотра файлов дампа. Учтите, что это просто огромный текстовый файл с sql-командами. Любой инструмент SQL Query Analizer обычно может открывать и просматривать файлы. Нет инструмента (который я видел), который позволил бы вам рассматривать текстовый файл как редактируемую базу данных. Даже графический интерфейс MYSQL Workbench имеет один встроенный.

В качестве немного более простого метода импорта / изменения / и т.д. файлов дампа просто используйте рабочую среду mysql, чтобы импортировать файл дампа на локально работающий сервер БД ... и экспортировать его обратно, когда закончите. Нет необходимости во всей структуре php с myPHPAdmin ... и apache ... и всем остальным.

Я постоянно возвращаюсь к этому вопросу о том, как запросить снимок БД, и в итоге собрал коллекцию вызовов Docker, которые вытаскивают phpmyadmin для файла дампа .sql. Это не совсем легкое решение, но оно быстрое (во всяком случае, после первого ввода образов Docker), а созданные базы данных и серверы являются одноразовыми.

С помощью приведенного ниже сценария (несовершенного и специфичного для OSX) это однострочный процесс, позволяющий вытащить или запустить соответствующие машины Docker, загрузить файл дампа на сервер mysql и открыть браузер, в котором phpmyadmin указывает на соответствующую базу данных. :

#!/bin/bash
ROOT_PWD=root

if [ $# -lt 1 ]; then
  echo "Need a dump file"
  exit 1
fi

dump="$1"
IP=$( docker-machine ip default )

if ! $( docker ps | grep -q "dump_db$" ); then
  # create the data container
  docker create --name dump_data -v /var/lib/mysql mysql

  # run the sql server
  docker run --name dump_db \
    --volumes-from dump_data -v /var/lib/mysql:/var/lib/mysql \
    -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql \
    -e MYSQL_DATABASE=dump -e MYSQL_ROOT_PASSWORD=$ROOT_PWD \
    -it -p 3306:3306 -d mysql

  # wait for it to be up and running...
  mysql_port=$( docker port dump_db | grep "3306/tcp" | awk -F: '{print $2;}' )
  while ! curl http://$IP:$mysql_port/
  do
    echo "waiting for mysql server..."
    sleep 1
  done
fi

# upload the dump
docker exec -i dump_db mysql -uroot -p$ROOT_PWD dump < $dump

if ! $( docker ps | grep -q "dump_phpmyadmin$" ); then
  # run phpmyadmin
  docker run -d --link dump_db:mysql -e MYSQL_USERNAME=root --name dump_phpmyadmin -p 80 ahebrank/phpmyadmin
fi

web_port=$( docker port dump_phpmyadmin | grep "80/tcp" | awk -F: '{print $2;}' )
open "http://$IP:$web_port/db_structure.php?server=1&db=dump"

(https://github.com/ahebrank/dumpviewer/blob/master/view)

На самом деле это не отличается от исходного ответа на загрузку файла на локальный сервер mysql. Но прошло три года, и контейнеры немного упрощают подготовку и ... ну, контейнеризацию.

Если вам не нужна полноценная локальная установка mysql, вы также можете импортировать свой mysql-дамп в базу данных sqlite и (временно) работать с этим. Для преобразования mysql-dump вы можете использовать этот ...