13

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

网站_开发网站_生产

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

4

3 回答 3

22

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

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

也适用于 Windows 终端。

于 2013-04-22T11:15:49.047 回答
3

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

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

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

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

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

注意:出于安全原因,我总是避免使用 -u 和 -p 参数。

于 2019-04-28T19:26:57.543 回答
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;
于 2015-01-07T01:16:34.610 回答