因为一个项目innodb的表数据文件只有.frm文件,想要通过.frm文件将表结构恢复回来。在百度找了很多文章都是说通过拷贝文件来恢复,试了很多次都是失败。无意中发现MySQL Utilities 这个mysql工具集里面有一个工具叫mysqlfrm,从字面上就觉得会是和这个文件相关的,看了下说明文档,大致就是可以通过这个工具把.frm文件导出为sql语句,有了sql语句就很容易导入数据库了。
具体用法如下,
mysqlfrm –server=root@localhost –port=3307 data.frm > data.sql
–server用来指定运行的mysql服务器,–port需要指定一个和运行的mysql服务器不同的端口,用来生成一个新的服务器,然后通过这个服务器分析.frm文件来导出sql语句,用起来很简单,不过对于导出使用的服务器版本会有要求,需要高于生成.frm文件的服务器版本。
因为文件比较多,写一个批处理来批量导出sql文件,
@echo off
for /r %%d in (*.frm) do (
mysqlfrm –server=root@localhost –port=3307 “%%d” > “%%~dpnd.sql”
)
pause
然后在批量导入数据库中,
@echo off
for /r %%d in (*.sql) do (
mysql < %%d
)
pause
MySQL Utilities的安装,Windows可以去https://dev.mysql.com/downloads/utilities/下载,Centos使用yum install mysql-utilities安装即可,使用MySQL Utilities还需要使用Python,如果没有Python的还需要安装。
- 本文固定链接: http://www.wy182000.com/2017/04/17/mysql通过-frm文件恢复表结构/
- 转载请注明: wy182000 于 Studio 发表