【问题标题】:How do I restore a dump file from mysqldump?如何从 mysqldump 恢复转储文件?
【发布时间】:2010-09-11 11:17:45
【问题描述】:

我获得了一个 MySQL 数据库文件,我需要将其还原为我的 Windows Server 2008 机器上的数据库。

我尝试使用 MySQL Administrator,但出现以下错误:

所选文件由 mysqldump 无法恢复 这个应用程序。

我如何让它工作?

【问题讨论】:

  • 好问题,感谢您在我面前提出这个问题,赞成!最终选择了一个不被接受的解决方案,效果很好,但每种方法都很好。干杯。

标签: mysql sql database


【解决方案1】:

如果您要恢复的数据库尚不存在,则需要先创建它。

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

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;

【讨论】:

  • 我个人喜欢这种方法。它显示了转储的进度以及不同的 sql 所花费的时间。
  • @Phrogz 实际上,您可以在命令行上使用mysql -u root -psecret 提供密码而无需空格,但缺点是您的密码以明文形式显示在进程列表和日志文件中。按照您的建议,最好使用空的-p 并在提示中输入。
  • 此方法的好处是允许设置基于会话的变量(例如 FOREIGN_KEY_CHECKS),而无需编辑转储文件
  • 这一切都很好,当手动做这种事情时,这一切都很好,但在 bash 脚本中不起作用。
  • 一个缺点:它无法加载 gzipped 转储(例如使用 mysqldump db | gzip -9 > dumpfile.sql.gz 生成)
【解决方案2】:

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

mysql -u <user> -p < db_backup.dump

如果转储是单个数据库,您可能需要在文件顶部添加一行:

USE <database-name-here>;

如果它是许多数据库的转储,则 use 语句已经在其中。

要运行这些命令,请打开命令提示符(在 Windows 中)和 cdmysql.exe 可执行文件所在的目录(您可能需要四处寻找它,这取决于您如何安装 mysql,即独立或作为 WAMP 等软件包的一部分)。进入该目录后,您应该可以像上面那样键入命令。

【讨论】:

  • 我是否使用“MySQL 命令行客户端”?我以前从未使用过 MySQL。
  • 在文本编辑器中打开转储文件,很容易通过,如果有任何“使用”语句,那么它的多个数据库,如果没有,你必须在运行该命令之前在顶部添加一个。
  • 当然,你放在“using”语句中的数据库必须首先存在。
  • 查看vogs的回答。语法是mysql -u&lt;user&gt; -p mydatabasename &lt; db_backup.dump 文件开头不需要USE 语句
  • “在文本编辑器中打开转储文件”的建议似乎很奇怪。这可能适用于小型数据库或像 EditPad 这样的缓冲文本编辑器,但对于其他所有内容,它都会窒息。如果您不必采取这一步,那就太好了。
【解决方案3】:

你只需要运行这个:

mysql -p -u[user] [database] < db_backup.dump

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

mysql -p -u[user] < db_backup.dump

要运行这些命令,请打开命令提示符(在 Windows 中)和 cdmysql.exe 可执行文件所在的目录(您可能需要四处寻找它,这取决于您如何安装 mysql,即独立或作为 WAMP 等软件包的一部分)。进入该目录后,您应该只需键入命令即可。

【讨论】:

    【解决方案4】:
    mysql -u username -p -h localhost DATA-BASE-NAME < data.sql
    

    here - step 3:这样你就不需要USE语句了

    【讨论】:

      【解决方案5】:

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

      mysql -uroot -p 
      

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

      create database new_db;
      use new_db;
      \. dumpfile.sql
      

      详细信息将根据创建转储文件时使用的选项而有所不同。

      【讨论】:

        【解决方案6】:

        运行命令进入数据库

         # mysql -u root -p 
        

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

        mysql> create database MynewDB;
        mysql> exit
        

        然后让 exit.Afetr that.Run 这个命令

        # mysql -u root -p  MynewDB < MynewDB.sql
        

        然后进入数据库并输入

        mysql> show databases;
        mysql> use MynewDB;
        mysql> show tables;
        mysql> exit
        

        就是这样............您的转储将从一个数据库恢复到另一个数据库

        否则有另一种转储恢复方式

        # mysql -u root -p 
        

        然后进入数据库并输入

        mysql> create database MynewDB;
        mysql> show databases;
        mysql> use MynewDB;
        mysql> source MynewDB.sql;
        mysql> show tables;
        mysql> exit
        

        【讨论】:

          【解决方案7】:

          如果你想查看转储的进度,试试这个:

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

          您当然需要安装“pv”。此命令仅适用于 *nix。

          【讨论】:

            【解决方案8】:

            我按照这些步骤让它工作了……

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

            2. 选择左侧的“目录”

            3. 在左下角的框中右击并选择“创建新架构”

              MySQL Administrator http://img204.imageshack.us/img204/7528/adminsx9.th.gifenlarge image

            4. 为新架构命名(例如:“dbn”)

              MySQL New Schema http://img262.imageshack.us/img262/4374/newwa4.th.gifenlarge image

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

              Windows Command Prompt http://img206.imageshack.us/img206/941/startef7.th.gifenlarge image

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

            7. 执行命令:

              mysql -u root -p dbn < C:\dbn_20080912.dump
              

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

              MySQL dump restore command line http://img388.imageshack.us/img388/2489/cmdjx0.th.gifenlarge image

            8. 享受吧!

            【讨论】:

              【解决方案9】:

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

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

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

              mysql> create database temp
              mysql> use temp
              mysql> source c:\code\dump.sql
              

              【讨论】:

                【解决方案10】:

                你可以试试SQLyog'Execute SQL script'工具来导入sql/dump文件。

                【讨论】:

                  【解决方案11】:

                  使用在 Linux 上创建的 200MB 转储文件在带有 mysql 5.5 的 Windows 上进行恢复,我取得了更大的成功

                  source file.sql
                  

                  从 mysql 提示符而不是使用

                  mysql  < file.sql
                  

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

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

                  我的价值观是

                  [mysqld]
                  max_allowed_packet = 64M
                  interactive_timeout = 250
                  wait_timeout = 250
                  

                  【讨论】:

                    【解决方案12】:
                    ./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file
                    

                    【讨论】:

                    • 这与其他几个答案相同,这是一个八年前的问题。
                    • 虽然选择的答案非常好,但这个答案其实对我来说更有用。我的数据库文件非常大,在 Notepad++ 中打开它是一场噩梦,它无法处理大小,并且不允许我在 sql 文件的顶部添加数据库名称。在这种情况下,能够从命令行指定数据库名称实际上更有帮助。
                    • mysql 命令不接受选项及其参数之间的空格。必须改成-u&lt;username&gt;,而且命令行根本不应该提供密码。
                    【解决方案13】:

                    如果备份/转储不是从那里创建的,则无法使用 MySQL Admin 中的恢复菜单。不过值得一试。如果您选择使用复选框“忽略错误”,它会说它已成功完成,尽管它显然退出时只导入了一小部分行……请注意,这是一个转储。

                    【讨论】:

                      【解决方案14】:

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

                      mysql -u <username> -p<password> -e "source <path to sql file>;"
                      

                      【讨论】:

                      • 例如mysql -u root -p12345678 -e "source /tmp/backup.sql;"
                      • 不要像这样使用密码,只要使用-p,在你按回车后命令行会提示你一个安全的密码请求。
                      • 当您负担得起交互式提示时,您是正确的。当你不能(例如无人参与的脚本)时,你可能会内联使用它
                      【解决方案15】:

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

                      mysql databasename < backup.sql
                      

                      【讨论】:

                        【解决方案16】:

                        您还可以使用 MySQL Administrator 中的恢复菜单。您只需打开备份文件,然后单击恢复按钮。

                        【讨论】:

                          【解决方案17】:

                          如何使用 MySQLWorkbench 恢复 MySQL 数据库

                          您可以在查询选项卡中运行 drop 和 create 命令。

                          如果架构当前存在则删除它

                          DROP DATABASE `your_db_name`;
                          

                          创建新架构

                          CREATE SCHEMA `your_db_name`;
                          

                          打开您的转储文件

                          1. 单击在新查询选项卡中打开 SQL 脚本图标并选择您的数据库转储文件。
                          2. 然后点击运行 SQL 脚本...
                          3. 然后您可以预览 SQL 转储脚本的第一行。
                          4. 然后您将选择默认架构名称
                          5. 接下来选择默认字符集 utf8 通常是安全的选择,但您可以通过查看预览行中的类似 character_set 来辨别它。
                          6. 点击运行
                          7. 请耐心等待大型数据库恢复脚本,并注意您的驱动器空间会消失! ?

                          【讨论】:

                            【解决方案18】:

                            如果您已经在mysql 提示符下并假设您的转储文件dump.sql,那么我们也可以使用以下命令来恢复转储

                            mysql> \. dump.sql
                            

                            如果您的转储大小较大,请将max_allowed_packet 值设置为更高。设置此值将帮助您更快地恢复转储。

                            【讨论】:

                              猜你喜欢
                              • 2017-11-26
                              • 2016-06-07
                              • 1970-01-01
                              • 2020-06-07
                              • 2020-12-07
                              • 2014-02-19
                              • 1970-01-01
                              相关资源
                              最近更新 更多