【问题标题】:Copy mysql database from mysql command line从 mysql 命令行复制 mysql 数据库
【发布时间】:2014-09-01 15:16:00
【问题描述】:

如何从mysql命令行复制database1database2

我知道mysqldump 是一种选择,或者我可以这样做

drop table if exists table2; 
create table table2 like table1;
insert into table2 select * from table1;

但是,我不想为每个表名手动执行此操作。这可能吗?

这里的关键是“从mysql命令行” mysql> ...

【问题讨论】:

  • 只是为了确定:是否“必须”使用 mysql 命令行?使用mysqldump 是不可能的吗?
  • 是的,感谢您的提问。 mysql 命令行是我正在寻找的,而不是 bash 终端

标签: mysql sql


【解决方案1】:

首先创建副本数据库:

CREATE DATABASE database2;

确保用户和权限都到位并且:

 mysqldump -u admin -p database1| mysql -u backup -pPassword database2; 

你也可以参考下面的链接在mysql shell上执行。

http://dev.mysql.com/doc/refman/5.5/en/mysqldump-copying-to-other-server.html

【讨论】:

    【解决方案2】:

    Mysqldump 也可以在 mysql 命令行中使用。

    使用:system (\!):执行系统 ​​shell 命令

    查询:

    系统mysqldump -psecret -uroot -hlocalhost 测试> test.sql

    系统mysql -psecret -uroot -hlocalhost

    【讨论】:

      【解决方案3】:

      在存储过程中,循环遍历结果

      SELECT table_name FROM information_schema.tables WHERE table_schema = 'sourceDB';
      

      在每次迭代中,准备并执行动态 SQL 语句:

      -- for each @tableName in the query above
      CREATE TABLE targetDB.@tableName LIKE sourceDB.@tableName;
      INSERT INTO targetDB.@tableName SELECT * FROM sourceDB.@tableName;
      

      对不起,存储过程的 MySQL 语法让我很头疼,我现在懒得写完整的代码。

      资源:

      【讨论】:

        猜你喜欢
        • 2012-07-10
        • 2011-03-02
        • 1970-01-01
        • 1970-01-01
        • 2015-08-29
        • 1970-01-01
        • 2017-09-22
        • 2015-09-18
        • 1970-01-01
        相关资源
        最近更新 更多