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

使用mysql将一个数据库复制并覆盖到另一个数据库中,mysql,mysqldump,Mysql,Mysqldump,我想将生产数据库复制到我的开发环境中。我将网站制作复制到developermnt环境的mysql中,因此使用SHOW数据库;现在我有 网站开发 网站制作 作为数据库。如何使用mysql命令将所有表及其内容从website\u production复制并覆盖到website\u developermnt 这不是MySQL命令,而是命令行中最简单的方法: $ mysqldump -u user --password=pass live_db_name | mysql -u user --passwo

我想将生产数据库复制到我的开发环境中。我将网站制作复制到developermnt环境的mysql中,因此使用SHOW数据库;现在我有

网站开发 网站制作


作为数据库。如何使用mysql命令将所有表及其内容从website\u production复制并覆盖到website\u developermnt

这不是MySQL命令,而是命令行中最简单的方法:

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

也适用于Windows终端。

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

示例#1:

示例2:

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

这就是我总是这样做的原因(
--可以使用例程来代替下面命令中的
-R
):

事实上,由于我出于备份目的进行定期转储,我更喜欢使用备份转储本身,因此将其保存在文件中:

mysqldump ${source_db} -R > ${source_db}.sql
mysql ${dest_db} < ${source_db}.sql
mysqldump${source\u db}-R>${source\u db}.sql
mysql${dest_db}<${source_db}.sql

注意:我总是避免使用-u和-p参数。

只是为了澄清-如果有人感到困惑,这就是将live\u db\u名称转储到localhost
    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;
$ mysqldump ${source_db} -R | mysql ${dest_db}
mysqldump ${source_db} -R > ${source_db}.sql
mysql ${dest_db} < ${source_db}.sql