【问题标题】:Mysqldump - How to restore a single table from this file?Mysqldump - 如何从此文件恢复单个表?
【发布时间】:2016-06-07 15:35:50
【问题描述】:

我只需要在我的数据库中恢复一个表。

我有一个 .sql 文件,其中包含一个表所需的所有信息,但其余部分会覆盖其他表的重要信息。

而不是使用解决方案 here - 使用我从未听说过的工具,我认为手动执行它会更有把握。

不幸的是,MySqlDump 生成了一个 GIANT 插入行太长,无法粘贴到 mysql 命令行中...

我该怎么办?

我应该像上面的链接描述的那样使用 sed 吗?

或者我可以将特定表的命令从mysqldump.sql 复制粘贴到新的.sql 文件中,然后调用:

mysql -u root -p -h localhost < copyPasteFile.sql

【问题讨论】:

  • @Matt 在 Windows 计算机上我可以使用 grep 或 sed 吗?我读到它们是基于 UNIX 的?
  • mysql -u root -p 数据库名 -h localhost
  • @RizkiWahyu 我现在就试试。
  • @RizkiWahyu 对此发表答案,我会接受。这是迄今为止最简单的方法。
  • 我已经发帖了,请采纳答案

标签: php mysql database mysqldump sql-insert


【解决方案1】:

你可以试试

mysql -u root -p databasename -h localhost < copyPasteFile.sql 

【讨论】:

    【解决方案2】:
    mysql -uuser -ppassword -e "create database temporary"
    
    mysql -uuser -ppassword temporary < copyPasteFile.sql
    
    mysqldump -uuser -ppassword temporary yourtable > onlythattable.sql
    
    mysql -uuser -ppassword therealdb < onlythattable.sql
    
    mysql -uuser -ppassword -e "drop database temporary"
    

    确保 copyPasteFile.sql 没有“使用某些数据库;”如果是用phpmyadmin导出的,可能有,如果用mysqldump导出就不会了。

    【讨论】:

      【解决方案3】:

      我不确定这是否是最好的方法,但我只是启动一个新架构并将备份恢复到其中,转储我需要的数据并将其导入生产数据库。

      我使用的是 MYSQL 工作台,这使它更容易,但以下步骤可能可以在命令行中重现

      1. 创建新的 MYSQL 架构
      2. 导入独立备份
      3. 将“目标架构”设置为新的空数据库(.sql Dump 不得包含架构创建代码)
      4. 恢复备份
      5. 将表转储到 csv 并将其导入到生产实时数据库中
      6. 删除恢复架构

      要在命令行恢复到一个模式,看起来就像你使用的那样:

      mysql -u &lt;user name&gt; -p &lt;password&gt; &lt;database name&gt; &lt; sqlfilename.sql

      【讨论】:

      • 您能否详细说明一下?
      猜你喜欢
      • 2010-09-11
      • 1970-01-01
      • 2017-11-26
      • 2014-01-30
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多