【问题标题】:restoring a MySQL database恢复 MySQL 数据库
【发布时间】:2011-03-03 21:18:00
【问题描述】:

我使用名为 library 的数据库的 mysqldump 实用程序创建了一个名为 ab.sql 的文件。它工作得很好。现在我正在尝试使用 mysqlimport 恢复它。 我的数据库已经存在。但我想覆盖它。我在用 命令

mysqlimport -uroot -p**** library D:/ab.sql

在命令行中,但它给出了一个错误提示,

mysqlimport: Error: 1146, Table 'library.ab' doesn't exist, when using table: ab

急需帮助。

【问题讨论】:

    标签: mysql sql mysql-error-1146


    【解决方案1】:

    mysqlimport 将文本文件中的行读入数据库。 mysqldump 输出一个包含 SQL 语句的文件,而不是简单的行。您可以使用以下命令运行这些 SQL 语句:

    mysql -u root < D:/ab.sql
    

    根据您的 mysqldump 选项,这可能会删除数据库中的现有数据。如果您不确定,我会用 grep 搜索“drop”和“delete”以确保它看起来正常。

    【讨论】:

    • 我也尝试在 cmd 提示符下执行此操作。但它说,“'mysql' 不是内部或外部命令、可运行程序或批处理文件。”
    • 我们可以使用mysqlimport备份整个数据库吗?我刚刚读到它只能恢复表名和.sql 文件名必须相同的特定表。我怎样才能恢复整个数据库...??
    • mysqldump 用于备份数据库。它可以转储一个表、一个数据库或所有数据库。它的输出是一个纯文本文件,其中包含重建转储数据所需的所有 SQL 查询。您使用 mysql 监视器“导入”转储。鉴于您的“未识别”错误,它要么未安装,要么不在您的路径中。
    【解决方案2】:

    Marc B 评论道:鉴于您的“未识别”错误,要么它没有安装,要么不在您的路径中。

    如何“识别”mysql

    如果您确实安装了 MySQL,比如在 Windows 7 上安装了 XAMPP 1.7.3,安装到 C:\xampp,您需要打开 Windows 命令行 (cmd.exe) 并更改路径以便包含 MySQL:

    cd C:\xampp\mysql\bin
    

    然后您将添加来自froody's answer 的命令或一些变体,例如:

    C:\xampp\mysql\bin>mysql -u {DB_USER} -p {DB_NAME} < path/to/file/ab.sql
    

    如果您在运行上述命令之前将数据库文件(即您最初使用 mysqldump 导出的文件)移动到C:\xampp\mysql\bin,则可以不使用数据库文件的路径,只留下:

    C:\xampp\mysql\bin>mysql -u {DB_USER} -p {DB_NAME} < ab.sql
    

    然后您将被要求输入数据库用户的密码。然后该命令应该执行。完成后您应该会看到如下内容:

    希望这有助于并且是准确的,在 StackOverflow 的一点帮助下,这就是它对我的工作方式。祝你好运!

    【讨论】:

    • 您建议的方法是否比运行mysqlimport 更有效?如果是,如果我们运行mysqimport,这种方法的完成速度有多快?
    • 请对此持保留态度,但根据我的经验,mysqlimport 的使用只有在我导入不是.sql 格式的数据文件时才会发挥作用。例如,使用mysqlimport 客户端将.csv 文件导入数据库将是合适的用例。至于速度,我无法提供任何证据,但我倾向于相信.sql 文件会比使用mysqlimport.csv 格式导入的相同数据文件更快。
    • mysqlimport 1小时左右可以导入4000万行。 .sql 要慢得多。
    • 只是澄清一下:这需要在 windows cmd 提示符下完成。在 Git Bash 提示符下对我不起作用。
    猜你喜欢
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 2013-02-24
    相关资源
    最近更新 更多