web-dev-qa-db-ja.com

MySQL Dump Viewer

私はLinuxユーザーですが、オフィスにはWindowsラップトップが付属しています。 PHPmyadminで小さなWebサーバーを起動したり、リモートシステムにアップロードしてデータベースにインポートしたりすることもできますが、私がやっていることについて、もっと簡単な方法があるかどうか知りたいのですが?

私が持っているのは、データベースのMySQLダンプファイルです。 MySQLダンプファイルを読み取って、実際のMySQLデータベースがなくても(データを検索するために)選択を実行できるものがあるかどうかを知る必要があります。ファイルのような仮想MySQLデータベースのようなものです。基本的に、私はデータを相互参照しようとしているのですが、新しいデータベースを作成してインポートを行い、そのようなデータを読み取ることを望んでいません。必要な場合はそうしますが、ダンプファイルを読み取り、データベースに接続されているかのように表示できるプログラムがあるのか​​と思っていました。

4
drewrockshard

そこにダンプファイルを表示するためのツールがいくつかあります。これは、sqlコマンドを含む巨大なテキストファイルであることに注意してください。そこにあるSQLクエリアナライザーツールは通常、ファイルを開いて表示できます。 txtファイルを編集可能なデータベースとして扱うことができるツール(私が見たもの)はありません。 MYSQL Workbench GUIにも1つが組み込まれています。

ダンプファイルのインポート/変更/その他の少し簡単な方法として、mysqlワークベンチを使用して、ダンプファイルをローカルで実行中のDBサーバーにインポートし、完了したらエクスポートして戻します。 myPHPAdmin ...とApache ...などのすべてのphpフレームワーク全体は必要ありません。

2
TheCompWiz

私は、DBスナップショットを照会する方法についてのこの質問に何度も戻ってきて、.sqlダンプファイルのphpmyadminをプルアップするDocker呼び出しのコレクションを一緒に投げてしまいました。これは正確に軽量なソリューションではありませんが、(とにかく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サーバーにロードするための元の回答と実際には異なりません。しかし、それは3年後のことであり、コンテナーによってプロビジョニングが行われます。まあ、コンテナー化は少し簡単です。

1
ahebrank

本格的なローカルmysqlインストールが必要ない場合は、mysql-dumpをsqliteデータベースにインポートして、(一時的に)これを操作することもできます。 mysql-dumpを変換するには、 this ...を使用できます。

0
m.sr