我得到了一个MySQL数据库文件,我需要在我的WindowsServer2008机器上作为数据库进行恢复。
我尝试使用mysql administrator,但出现以下错误:
The selected file was generated by
mysqldump and cannot be restored by
this application.
我该怎么做?
如果要还原的数据库不存在,则需要先创建它。
在命令行上,如果您位于包含转储文件的同一目录中,请使用以下命令(使用适当的替换):
1 2 3 4 5
| C:\ > mysql -u root -p
mysql > create database mydb ;
mysql > use mydb ;
mysql > source db_backup.dump ; |
- 我个人喜欢这种方法。它显示了转储的进度以及不同的SQL所花费的时间。
- 这应该标记为正确答案。
- 当您恢复到干净的数据库时,这确实是正确的方法。
- 注意,-p命令行参数不允许传递密码,而是导致出现密码提示。在上面的答案中,secret将用作数据库的名称,而不是密码。应编辑此答案以从命令行中删除单词"secret"。
- @phrogz实际上可以使用mysql -u root -psecret在命令行上提供密码,而不需要空格,但是有一个缺点,即您的密码在进程列表和日志文件中以明文显示。如您所建议的,最好使用空的-p并在提示中键入它。
- 此方法的优点是允许在不必编辑转储文件的情况下设置基于会话的变量(例如,外键检查)
- 根据JoeHolloway对最佳实践的评论,我更新了对MySQL的调用,以便在没有密码的情况下传入"-p"。
- 这在手工做这类事情的时候非常好,但是在bash脚本中不起作用。
- 另外-如果您不知道数据库名称,那么运行:"head-n 30 db_backup.dump",您应该可以看到那里的数据库名称。
- 我需要还原备份,以便将其导入到SQL Server中。我只安装了MySQL,但没有将其注册为服务,也没有将其添加到我的路径中,因为我不需要保持它的运行。我刚刚使用Windows资源管理器将转储文件放入C:codedump.sql。然后从"开始"菜单项打开mysql。创建了数据库,然后用完整的路径运行source命令:mysql> create database temp mysql> use temp mysql> source c:\code\dump.sql(我在下面添加了一个具有更好的空间格式的答案。)
- 如果转储文件来自单个数据库,那么最好不要修改它。
- 一个缺点:它不能加载gzip转储(例如,使用mysqldump db | gzip -9 > dumpfile.sql.gz生成)
它应该像运行这个一样简单:
1
| mysql -u <user> -p < db_backup.dump |
如果转储是单个数据库,则可能需要在文件顶部添加一行:
如果它是许多数据库的转储,则use语句已经在其中。
要运行这些命令,请打开命令提示符(在Windows中)和cd到mysql.exe可执行文件所在的目录(您可能需要四处查看,这取决于您如何安装mysql,即独立安装或作为包(如wamp)的一部分)。一旦你在那个目录中,你应该能够像我上面看到的那样输入命令。
- 我是否使用"mysql命令行客户端"?我以前从未使用过MySQL。
- 我不知道它包含多少数据库。我假设一个。
- 在文本编辑器中打开转储文件,很容易理解,如果有任何"using"语句,那么它是多个数据库的,如果没有,则必须在顶部添加一个,然后才能运行该命令。
- 当然,您放入"using"语句中的数据库必须首先存在。
- 是的,达弗,想想看!我需要启动并运行它,以便重新设计它(包括舒适的语言和数据库)。
- 我相信"使用"是正确的关键字。
- 见VOGS答案。语法为mysql -u -p mydatabasename < db_backup.dump,文件开头不需要USE语句。
- 这个平面图在mysql命令行界面中显示。但是请注意,为了避免一系列无害但令人不安的错误消息,Windows安装必须用正斜杠替换路径字符串中的反斜杠。我还使用tee附加了一个日志文件,并在每次恢复之后运行show tables来证明它已经完成。
- "在文本编辑器中打开转储文件"的建议似乎很奇怪。这可能适用于小型数据库或像editpad这样的缓冲文本编辑器,但对于其他一切,它都会阻塞。如果你不用走这一步就好了。
- @Justinbinett谢谢你帮了我
- 我的SQL转储文件在本地计算机上,那么应该是转储文件的路径。是否可以使用本地计算机路径,因为它对我不起作用。我应该首先将转储文件上载到远程服务器磁盘空间吗?
您只需运行以下命令:
mysql -p -u[user] [database] < db_backup.dump
如果转储包含多个数据库,则应省略数据库名称:
mysql -p -u[user] < db_backup.dump
要运行这些命令,请打开命令提示符(在Windows中)和cd到mysql.exe可执行文件所在的目录(您可能需要四处查看,这取决于您如何安装mysql,即独立安装或作为包(如wamp)的一部分)。一旦你在那个目录中,你就可以只输入命令。
1
| mysql -u username -p -h localhost DATA -BASE -NAME < data.sql |
看这里-第3步:这样你就不需要使用声明了
当我们使用mysqldump创建转储文件时,它包含的是一个用于重新创建数据库内容的大型SQL脚本。所以我们通过启动mysql的命令行客户机来恢复它:
(其中root是MySQL的管理用户名),一旦连接到数据库,我们需要命令来创建数据库并将文件读取到其中:
根据创建转储文件时使用的选项,详细信息会有所不同。
- +1因为这是在Windows上执行此操作的最简单方法,默认情况下,mysql.exe二进制文件不在路径中,但mysql命令行很容易从"开始"菜单启动。
运行命令进入数据库
输入用户的密码,然后创建新数据库
并使exit.afetr.run这个命令
1
| # mysql -u root -p MynewDB < MynewDB.sql |
然后输入db并键入
就这样……您的转储将从一个数据库恢复到另一个数据库
或者有另一种方法进行转储恢复
然后输入db并键入
我让它按照这些步骤工作&hellip;
打开mysql administrator并连接到服务器
选择左侧的"目录"
右键单击左下方的框并选择"创建新架构"
mysql管理员http://img204.imageshack.us/img204/7528/adminsx9.th.gif放大图像
命名新模式(例如:"dbn")
mysql新模式http://img262.imageshack.us/img262/4374/newwa4.th.gif放大图像
打开Windows命令提示(cmd)
Windows命令提示http://img206.imageshack.us/img206/941/startef7.th.gif放大图像
将目录更改为mysql安装文件夹
执行命令:
1
| mysql -u root -p dbn < C:\dbn_20080912.dump |
&hellip;其中"root"是用户的名称,"dbn"是数据库名称,"c:dbn_20080912.dump"是mysqldump.dump文件的路径/文件名。
mysql dump restore命令行http://img388.imageshack.us/img388/2489/cmdjx0.th.gif放大图像
享受!
您可以尝试使用sqlyog"执行SQL脚本"工具导入SQL/dump文件。
- 我如何在MySQL工作台中执行此操作?
- 我只是想知道您当前的数据库包含什么?大声笑
- 因为Sakila?
- 我添加了一个答案,说明如何使用mysql workbench@franciscocorrelesmorales进行恢复。只是晚了4-5年,哈哈。
如果要查看转储的进度,请尝试以下操作:
pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME
您当然需要安装"pv"。此命令仅在*nix上有效。
1
| . /mysql -u <username > -p <password > -h <host -name like localhost > <database-name > < db_dump -file |
- 这和其他几个答案一样,这是一个8年前的问题。
- 虽然选择的答案很好,但这个答案实际上对我更有用。我的数据库文件很大,在记事本中打开它是一个噩梦,它只是无法处理大小,不允许我将数据库名称添加到SQL文件的顶部。在这种情况下,从命令行指定db名称实际上更有用。
作为先前答案的具体示例:
我需要还原备份,以便将其导入/迁移到SQL Server。我只安装了MySQL,但没有将其注册为服务,也没有将其添加到我的路径中,因为我不需要保持它的运行。
我使用Windows资源管理器将转储文件放入C:codedump.sql。然后从"开始"菜单项打开mysql。创建了数据库,然后以完整路径运行source命令,如下所示:
使用Linux上创建的200MB转储文件在Windows w/MySQL5.5上进行恢复,我在
从mysql提示符中的方法,而不是使用
在命令行上的方法,这导致了一些错误2006"服务器已离开"(在Windows上)
奇怪的是,在(mysql)安装期间创建的服务引用了一个不存在的my.ini文件。我将"大"示例文件复制到my.ini我已经修改了建议的增长。
我的价值观是
1 2 3 4
| [mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250 |
如果没有从mysql admin中创建备份/转储,则不能使用该菜单。不过值得一试。如果您选择用复选框"忽略错误",它会说它成功完成了,尽管它显然只导入了一小部分行就退出了……这是一个转储,请注意。
一条用于从mysqldump恢复生成的SQL的行命令
1
| mysql -u <username> -p<password> -e"source <path to sql file>;" |
- 如mysql -u root -p12345678 -e"source /tmp/backup.sql;"。
- 不要使用这样的密码,只需使用-p,命令行会在您按Enter键后提示您一个安全密码请求。
- 当您能够提供交互式提示时,您是正确的。当您不能(例如无人参与的脚本)时,您可能会直接使用它
您也可以使用MySQL管理员中的恢复菜单。您只需打开备份文件,然后单击恢复按钮。
如何使用mysqlWorkbench恢复mysql数据库
可以在查询选项卡中运行DROP和CREATE命令。
删除当前存在的架构
创建新架构
打开转储文件
单击在新查询选项卡中打开SQL脚本图标,然后选择数据库转储文件。
然后单击运行SQL脚本…
然后,您可以预览SQL转储脚本的第一行。
然后您将选择默认架构名称
接下来,选择默认的字符集utf8通常是一个安全的赌注,但是您可以从查看类似字符集的预览行中辨别出来。
单击运行
对大型数据库恢复脚本要有耐心,并注意驱动器空间的融化!???