如何从mysqldump恢复转储文件?

Zac*_*son 525 mysql sql database

我得到了一个MySQL数据库文件,我需要将其恢复为Windows Server 2008计算机上的数据库.

我尝试使用MySQL Administrator,但是我收到以下错误:

所选文件由mysqldump生成,无法由此应用程序恢复.

我该如何工作?

Dón*_*nal 699

如果您要还原的数据库尚不存在,则需要先创建它.

在命令行中,如果您位于包含转储文件的同一目录中,请使用以下命令(具有适当的替换):

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;
Run Code Online (Sandbox Code Playgroud)

  • 我个人喜欢这种方法.它显示了转储的进度以及不同的sql所花费的时间. (49认同)
  • @Phrogz实际上,您可以使用`mysql -u root -psecret`在命令行上提供密码而没有空格,但缺点是您的密码在进程列表和日志文件中以明文形式显示.正如你的建议,最好使用空的`-p`并在提示符下输入它. (11认同)
  • 一个缺点:它无法加载 gzipped 转储(例如使用 `mysqldump db | gzip -9 > dumpfile.sql.gz` 生成) (2认同)

Jus*_*ett 567

它应该像运行这个一样简单:

mysql -u <user> -p < db_backup.dump
Run Code Online (Sandbox Code Playgroud)

如果转储属于单个数据库,则可能必须在文件顶部添加一行:

USE <database-name-here>;
Run Code Online (Sandbox Code Playgroud)

如果它是许多数据库的转储,那么use语句已经在那里.

要运行这些命令,请打开一个命令提示符(在Windows中)和可执行文件cd所在的目录mysql.exe(您可能需要查看一下它,它取决于您如何安装mysql,即独立或作为其一部分像WAMP这样的包.一旦进入该目录,您应该能够像我上面那样输入命令.

  • 见vogs回答.语法是`mysql -u <user> -p mydatabasename <db_backup.dump`在文件开头不需要`USE`语句 (101认同)
  • 当然,您在"使用"语句中放入的数据库必须首先存在. (6认同)
  • “在文本编辑器中打开转储文件”建议似乎很奇怪。这可能适用于小型数据库或像 EditPad 这样的缓冲文本编辑器,但对于其他所有东西,它会令人窒息。如果您不必执行此步骤,那就太好了。 (2认同)

vog*_*vog 233

你只需要运行这个:

cd

如果转储包含多个数据库,则应省略数据库名称:

mysql.exe

要运行这些命令,请打开一个命令提示符(在Windows中)和可执行文件cd所在的目录mysql.exe(您可能需要查看一下它,它取决于您如何安装mysql,即独立或作为其一部分像WAMP这样的包.进入该目录后,您应该只需键入命令即可.


wom*_*omd 58

mysql -u username -p -h localhost DATA-BASE-NAME < data.sql
Run Code Online (Sandbox Code Playgroud)

这里 - 第3步:这样你不需要USE声明


pdc*_*pdc 33

当我们制作转储文件时mysqldump,它包含的是一个用于重新创建数据库内容的大型SQL脚本.所以我们通过启动MySQL的命令行客户端来恢复它:

mysql -uroot -p 
Run Code Online (Sandbox Code Playgroud)

(root我们的MySQL管理员用户名在哪里),一旦连接到数据库,我们需要命令来创建数据库并将文件读入其中:

create database new_db;
use new_db;
\. dumpfile.sql
Run Code Online (Sandbox Code Playgroud)

根据创建转储文件时使用的选项,详细信息会有所不同.


Jav*_*eel 18

运行命令进入DB

 # mysql -u root -p 
Run Code Online (Sandbox Code Playgroud)

输入用户的密码然后创建新数据库

mysql> create database MynewDB;
mysql> exit
Run Code Online (Sandbox Code Playgroud)

然后退出.Afetr that.Run这个命令

# mysql -u root -p  MynewDB < MynewDB.sql
Run Code Online (Sandbox Code Playgroud)

然后进入db并输入

mysql> show databases;
mysql> use MynewDB;
mysql> show tables;
mysql> exit
Run Code Online (Sandbox Code Playgroud)

多数民众赞成........您的转储将从一个DB恢复到另一个DB

否则,存在转储恢复的备用方式

# mysql -u root -p 
Run Code Online (Sandbox Code Playgroud)

然后进入db并输入

mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit
Run Code Online (Sandbox Code Playgroud)


Zac*_*son 14

我按照这些步骤开始工作......

  1. 打开MySQL Administrator并连接到服务器

  2. 选择左侧的"目录"

  3. 右键单击左下方框并选择"Create New Schema"

    MySQL管理员http://img204.imageshack.us/img204/7528/adminsx9.th.gif 放大图片

  4. 命名新架构(例如:"dbn")

    MySQL新架构http://img262.imageshack.us/img262/4374/newwa4.th.gif 放大图片

  5. 打开Windows命令提示符(cmd)

    Windows命令提示符http://img206.imageshack.us/img206/941/startef7.th.gif 放大图像

  6. 将目录更改为MySQL安装文件夹

  7. 执行命令:

    mysql -u root -p dbn < C:\dbn_20080912.dump
    
    Run Code Online (Sandbox Code Playgroud)

    ...其中"root"是用户的名称,"dbn"是数据库名称,"C:\ dbn_20080912.dump"是mysqldump .dump文件的路径/文件名

    MySQL转储恢复命令行http://img388.imageshack.us/img388/2489/cmdjx0.th.gif 放大图片

  8. 请享用!


Ash*_*n A 12

您可以尝试SQLyog '执行SQL脚本'工具来导入sql/dump文件.

在此输入图像描述


Hen*_*jie 11

如果要查看转储的进度,请尝试以下操作:

pv -i 1 -p -t -e/path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

你当然需要安装'pv'.此命令仅适用于*nix.


vkr*_*a17 10

./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file
Run Code Online (Sandbox Code Playgroud)

  • 虽然选择的答案非常好,但这个答案对我来说实际上更有用.我的数据库文件很大,在Notepad ++中打开它是一场噩梦,它无法处理大小,也不允许我在sql文件的顶部添加数据库名称.在这种情况下,能够从命令行指定db名称实际上更有帮助. (2认同)

Mic*_*ael 10

作为先前答案的具体示例:

我需要恢复备份,以便将其导入/迁移到SQL Server.我只安装了MySql,但没有将其注册为服务或将其添加到我的路径中,因为我没有必要让它保持运行.

我使用Windows资源管理器将我的转储文件放在C:\ code\dump.sql中.然后从开始菜单项打开MySql.创建了数据库,然后使用完整路径运行source命令,如下所示:

mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql
Run Code Online (Sandbox Code Playgroud)


Jer*_*e_B 9

使用在Linux上创建的200MB转储文件在Windows w/mysql 5.5上恢复,我获得了更多的成功

source file.sql
Run Code Online (Sandbox Code Playgroud)

从mysql提示的方法比用

mysql  < file.sql
Run Code Online (Sandbox Code Playgroud)

在命令行上的方法,导致一些错误2006"服务器已经消失"(在Windows上)

奇怪的是,在(mysql)安装期间创建的服务引用了一个不存在的my.ini文件.我将"大"示例文件复制到my.ini,我已经使用建议的增加修改了该文件.

我的价值观是

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250
Run Code Online (Sandbox Code Playgroud)


Jos*_*ush 5

用于恢复生成的 SQL 的单行命令mysqldump

mysql -u <username> -p<password> -e "source <path to sql file>;"
Run Code Online (Sandbox Code Playgroud)

  • 当您能负担得起交互式提示时,您是对的。当你不能(例如无人值守脚本)时,你可能会内联使用它 (3认同)

Sur*_*gch 5

假设您已经创建了空白数据库,您还可以从命令行恢复数据库,如下所示:

mysql databasename < backup.sql
Run Code Online (Sandbox Code Playgroud)