Mysqldump - 如何从此文件恢复单个 table?

Mysqldump - How to restore a single table from this file?

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

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

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

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

我该怎么办?

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

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

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

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

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

  1. 创建新的MYSQL架构
  2. 导入独立备份
  3. 将"Target Schema"设置为新的空数据库(.sql转储不得包含模式创建代码)
  4. 恢复备份
  5. 转储 table 到 csv 并将其导入生产实时数据库
  6. 删除还原架构

要在命令行恢复模式,您使用的是:

mysql -u <user name> -p <password> <database name> < sqlfilename.sql

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 没有 "use somedatabase;" 如果它是用 phpmyadmin 导出的,它可能有那个,如果它是用 mysqldump 导出的则不会。

你可以试试

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