我是一名 Linux 用户,但是办公室里有一台 Windows 笔记本电脑。我可以使用 PHPmyadmin 启动一个小型 Web 服务器,甚至可以上传到远程系统并导入数据库,但是,对于我正在做的事情,我想知道是否有更简单的方法?
我有一个数据库的 MySQL 转储文件。我需要知道是否有任何东西可以读取 MySQL 转储文件,然后允许我执行选择(查找数据),而无需拥有实际的 MySQL 数据库。几乎就像一个虚拟的 MySQL 数据库文件。基本上,我试图交叉引用数据,我并不想创建一个新的数据库,进行导入,然后以那种方式读取数据。如果有必要,我会这样做,但我只是想知道是否有某种程序可以读取我的转储文件并让我像连接到数据库一样查看它。
答案1
有一些工具可以查看转储文件。请记住,它只是一个带有 sql 命令的巨大文本文件。任何 SQL 查询分析器工具通常都可以打开和查看文件。没有工具(我见过的)可以让您将 txt 文件视为可编辑数据库。甚至 MYSQL Workbench GUI 也有一个内置的。
作为导入/修改/等转储文件的稍微简单的方法,只需使用 mysql 工作台将转储文件导入本地运行的 DB 服务器...并在完成后将其导出。无需使用带有 myPHPAdmin 的整个 php 框架...和 apache...以及其他一切。
答案2
我一直在思考如何查询数据库快照这个问题,最后我拼凑了一组 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 服务器的原始答案并没有什么不同。但三年后,容器使配置和……嗯,容器化变得更容易一些。
答案3
如果你不想安装完整的本地 mysql,你也可以将 mysql-dump 导入到 sqlite 数据库中并(暂时)使用它。要转换 mysql-dump,你可以使用这...