【问题标题】:I want to copy table contained from one database and insert onto another database table我想复制一个数据库中包含的表并插入到另一个数据库表中
【发布时间】:2012-01-06 07:15:43
【问题描述】:

我想将表的架构以及该表中的数据复制到实时服务器上另一个数据库中的另一个数据库表中。我怎么能这样做?

【问题讨论】:

  • 使用两个数据库连接并从一个读取表结构并将该查询运行到另一个
  • 这些数据库是在不同的mysql实例上还是同一个?如果这是一个连续过程,则可以使用复制设置不同的实例。
  • @Nick 我的数据库在不同的 mysql 实例上。你能解释一下如何复制它吗?

标签: mysql sql mysqldump


【解决方案1】:

如果你想从一个数据库复制一个表到另一个数据库,你可以简单地做如下。

CREATE TABLE db2.table LIKE db1.table;
INSERT INTO db2.table SELECT * FROM db1.table;

【讨论】:

  • 如果表没有外键约束,这是一个很好的解决方案。我用它来制作整个数据库的副本,而不仅仅是一个表。为此,我建议使用 mysqldump 命令。
  • MySQL 现在可以将表数据存储在单个文件中(并且 frm 文件也是每个表)。这种方法无疑会奏效,但对于庞大的数据库,它会很慢。有没有别的办法?
  • 这仅适用于数据库在同一台服务器上的情况。
【解决方案2】:

或者只是 CREATE TABLE db2.table SELECT * FROM db1.table in MySQL 5

【讨论】:

  • 这不会复制索引等东西。它只是基于一组元组创建一个表。你可能不想这样做。
  • 是的,这个查询不复制 indexe
【解决方案3】:

在 BASH 中你可以这样做:

mysqldump database_1 table | mysql database_2

【讨论】:

    【解决方案4】:

    创建表 db2.table_new AS SELECT * FROM db1.table_old

    【讨论】:

      【解决方案5】:

      如果您只想复制结构,只需使用

      CREATE TABLE Db_Name.table1 LIKE DbName.table2;

      Ps > 不会复制架构和数据

      【讨论】:

        【解决方案6】:

        只需使用 -

        创建表 DB2.newtablename SELECT * FROM DB1.existingtablename;

        【讨论】:

          【解决方案7】:

          在命令行中:

          mysqldump -h localhost -u username -ppassword [SCHEMA] --tables [TABLE] | mysql -h otherhost -u username -ppassword [SCHEMA2]
          

          这会将本地主机上的 SCHEMA 中的表复制到其他主机上的 SCHEMA2。

          localhost 和 otherhost 只是主机名,可能相同或不同。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-05-15
            • 1970-01-01
            • 2012-12-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-03-31
            相关资源
            最近更新 更多