mysql还原到不同的数据库
我使用以下命令备份生产数据库:mysql还原到不同的数据库,mysql,mysqldump,Mysql,Mysqldump,我使用以下命令备份生产数据库: mysqldump -u root --opt --skip-extended-insert --databases my_production_db 生成的转储文件在顶部附近有以下几行: CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `my_production_db `; 为了将数据库恢复到不
mysqldump -u root --opt --skip-extended-insert --databases my_production_db
生成的转储文件在顶部附近有以下几行:
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `my_production_db `;
为了将数据库恢复到不同的目标,即my_DeDevelopment_db,我必须打开转储文件并编辑数据库命名的位
然后我跑:
mysql -u root -p <password> < mydumpfile
mysql-u root-p
我还没有想出另一种方法
随着数据库越来越大,这变得不切实际
我错过什么了吗?我不能指定要在哪里恢复数据库吗?我需要另一个备份命令吗?如果您删除选项
--databases
,但仍然指定数据库名称,您将无法获得create database语句。即:
mysqldump -u root --opt --skip-extended-insert my_production_db
在您的开发机器上,只需创建您希望还原到的任何数据库。@minaz答案很好,但我想再添加一点 问题是由
--数据库关键字引起的。如果省略关键字,它将不包含任何数据库创建内容
因此,转储时不使用--数据库关键字
mysqldump -u username -p database_name > dump.sql
并使用目标数据库名称还原它
mysql -u username -p target_database_name < dump.sql
mysql-u username-p target\u database\u name
此外,有几种方法可以做到这一点。请参阅(dba.stackexchange)上的类似问题。如果您已经有了转储,则可以删除用于创建和使用数据库的命令。只需删除第四行和新的第五行
sed '4d' dump.sql | sed '5d' > dump-striped.sql
在WindowsXAMPP上,我使用以下命令来实现这一点
出口
mysqldump -u root -p mydb > mydb.sql
进口
mysql -u root -p mynewdb < mydb.sql
mysql-u root-p mynewdb
我认为-p database_name
有错误,因为-p
选项名是--password
选项的简称。@Hibou57感谢您的评论。是的,-p
的意思是您提到的--password
。但是-p
实际上意味着“我将通过提示输入密码”。如果您想通过命令选项输入密码,那么应该没有像-p
而不是-p
这样的空白(空格)。即使没有--databases
选项,mysqldump
似乎仍然可以在转储中生成对数据库名称的引用。至少我对数据库转储中的一些alterdatabase`dbname`字符集utf8-COLLATE utf8\u-bin
有意见,但不使用--databases
选项。其中有两行,第二行覆盖第一行。最好只显示要删除的行。只有两个。您提供的方法是任意的-尤其是在格式更改或进行其他手动编辑时。。