使用mysql复制并覆盖一个数据库到另一个数据库

时间:2013-04-22 11:13:06

标签: mysql mysqldump

我想将生产数据库复制到我的开发环境中。我将website_production复制到my developpemnt环境的mysql中,所以使用SHOW DATABASES;现在我有

website_development website_production

作为数据库。如何使用mysql命令将所有表格及其内容从website_production复制并覆盖到website_developemnt?

3 个答案:

答案 0 :(得分:15)

这不是MySQL命令,但它是最简单的方法,从命令行:

$ mysqldump -u user --password=pass live_db_name | mysql -u user --password=pass -h localhost duplicate_db_name

也适用于Windows终端。

答案 1 :(得分:0)

这个解决方案我用于开发环境Wordpress安装。在我的例子中,wp_options是我要使用wp_options_apache中的值覆盖的数据。 Example#1查询仅覆盖表上更新的每行1个值,但可以通过用逗号分隔分配来轻松覆盖多个列,如第二个示例所示。

示例#1:

    UPDATE `wp_options` AS a
    LEFT JOIN `wp_options_apache` AS b
    ON a.option_name = b.option_name
    SET a.option_value = b.option_value;

示例#2:

    UPDATE `old_data` AS o
    LEFT JOIN `new_data` AS n
    ON o.prime_key = n.prime_key
    SET o.username = n.username,
        o.password = n.password,
        o.email = n.email;

答案 2 :(得分:0)

Glitch答案通常是好的,但是存储过程和函数将不会备份,因此不会复制到第二个数据库。

这就是为什么我总是这样做(在下面的命令中可以使用--routines代替-R

$ mysqldump ${source_db} -R | mysql ${dest_db}

实际上,当我出于备份目的而进行常规转储时,我更喜欢使用备份转储本身,因此将其保存在文件中:

mysqldump ${source_db} -R > ${source_db}.sql
mysql ${dest_db} < ${source_db}.sql

注意:对于security reasons,我始终避免使用-u和-p参数。