我有一个mysqldump备份我的mysql数据库,包括我们所有的表,这是大约440兆。我只想从mysqldump中恢复其中一个表的内容。这可能吗?从理论上讲,我可以只删除重建我想要的表的部分,但我甚至不知道如何有效地编辑这种大小的文本文档。
当前回答
一种可能的处理方法是恢复到临时数据库,并从临时数据库中转储该表。然后使用新的脚本。
其他回答
不管怎样,任何这样做的进程都必须遍历转储的整个文本,并以某种方式解析它。我只要grep
INSERT INTO `the_table_i_want`
并将输出导入mysql。看一下之前转储中的第一个表,以确保您以正确的方式获取INSERT。
编辑:好的,这次格式正确。
一种可能的处理方法是恢复到临时数据库,并从临时数据库中转储该表。然后使用新的脚本。
你应该尝试@bryn命令,但使用'分隔符,否则你也会提取有前缀或后缀的表,这是我通常做的:
sed -n -e '/DROP TABLE.*`mytable`/,/UNLOCK TABLES/p' dump.sql > mytable.sql
同样出于测试的目的,你可能想要在导入之前更改表名:
sed -n -e 's/`mytable`/`mytable_restored`/g' mytable.sql > mytable_restored.sql
要导入,可以使用mysql命令:
mysql -u root -p'password' mydatabase < mytable_restore.sql
大多数现代文本编辑器应该能够处理这样大小的文本文件,如果您的系统能够胜任的话。
不管怎样,有一次我不得不很快地做这件事,而我没有时间去找任何工具。我设置了一个新的MySQL实例,导入了整个备份,然后输出了我想要的表。
然后我将该表导入主数据库。
这很乏味,但相当容易。祝你好运。
您可以使用如下所示的终端线导入单个表。 这里导入单个用户表到特定的数据库。
mysql -u root -p -D my_database_name < var/www/html/myproject/tbl_user.sql
推荐文章
- SQL Server恢复错误-拒绝访问
- 警告用户/local/mysql/data目录不属于mysql用户
- 添加一个复合主键
- 无法添加或更新子行:外键约束失败
- 如何从本地机器mysqldump远程数据库
- 如何正确地创建复合主键- MYSQL
- 仅在Datetime列上按日期分组
- 在MySQL数据库中存储货币值的最佳数据类型
- 如何自定义'显示进程列表'在mysql?
- MySQL删除一些外键
- 用MySQL LEFT JOIN删除行
- MySQL - length() vs char_length()
- 使用PDO进行行计数
- 在Mac上安装MySQL后,使用ALTER USER语句重置MySQL root密码
- my.cnf文件在macOS上的位置