我想写一个脚本,复制我的当前数据库sitedb1到sitedb2在相同的mysql数据库实例。我知道我可以转储sitedb1到一个sql脚本:
mysqldump -u root -p sitedb1 >~/db_name.sql
然后将它导入sitedb2。 有没有更简单的方法,不用将第一个数据库转储到sql文件?
我想写一个脚本,复制我的当前数据库sitedb1到sitedb2在相同的mysql数据库实例。我知道我可以转储sitedb1到一个sql脚本:
mysqldump -u root -p sitedb1 >~/db_name.sql
然后将它导入sitedb2。 有没有更简单的方法,不用将第一个数据库转储到sql文件?
当前回答
如果你安装了phpmyadmin,有一个简单的方法:
转到你的数据库,选择“operation”选项卡,你可以看到“copy database to”块。使用它,您可以复制数据库。
其他回答
如果你安装了phpmyadmin,有一个简单的方法:
转到你的数据库,选择“operation”选项卡,你可以看到“copy database to”块。使用它,您可以复制数据库。
mysqladmin create DB_name -u DB_user --password=DB_pass && \
mysqldump -u DB_user --password=DB_pass DB_name | \
mysql -u DB_user --password=DB_pass -h DB_host DB_name
如果你在你的原始数据库中有触发器,你可以通过在导入之前管道替换来避免“Trigger already exists”错误:
mysqldump -u olddbuser -p -d olddbname | sed "s/`olddbname`./`newdbname`./" | mysql -u newdbuser -p -D newdbname
这个语句是在MySQL 5.1.7中添加的,但被发现是危险的,在MySQL 5.1.23中被删除了。它的目的是使升级5.1之前的数据库能够使用5.1中实现的将数据库名称映射到数据库目录名称的编码。但是,使用此语句可能会导致数据库内容的丢失,这就是删除它的原因。不要在出现RENAME DATABASE的早期版本中使用它。
要执行使用新编码升级数据库名称的任务,请使用ALTER database db_name UPGRADE DATA DIRECTORY NAME: http://dev.mysql.com/doc/refman/5.1/en/alter-database.html
首先创建重复的数据库:
CREATE DATABASE duplicateddb;
确保权限等都到位,并且:
mysqldump -u admin -p originaldb | mysql -u backup -p password duplicateddb;