我只需要恢复数据库中的单个表。
我有一个.sql
文件,其中包含一个表所需的所有信息,但其余信息将覆盖其他表的重要信息。
与其在这里使用解决方案——使用我从未听说过的工具,我认为手动完成会更确定。
不幸的是,MySqlDump 生成了一个 GIANT 插入行,太长而无法粘贴到 mysql 命令行中......
我该怎么办?
我应该像上面的链接描述的那样使用 sed 吗?
或者我可以将该特定表的命令从mysqldump.sql
复制粘贴到一个新的.sql
文件中,然后调用:
mysql -u root -p -h localhost < copyPasteFile.sql
你可以试试
mysql -u root -p databasename -h localhost < copyPasteFile.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 工作台,这使得它更容易,但以下步骤可能会在命令行上重现
- 创建新的 MYSQL 架构
- 导入独立备份
- 将"目标架构"设置为新的空数据库(.sql转储不得包含架构创建代码)
- 还原备份 将
- 表转储到 csv 并将其导入到生产实时数据库中
- 删除还原架构
要在命令行还原到架构,您似乎使用:
mysql -u <user name> -p <password> <database name> < sqlfilename.sql