我想复制一个数据库中包含的表,然后插入到另一个数据库表中


96

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


使用两个数据库连接,并从一个读取表结构,并与其他运行查询

这些数据库是在单独的mysql实例上还是在同一实例上?如果这是一个连续的过程,则可以使用复制设置不同的实例。
Nick

@Nick我的数据库位于不同的mysql实例上。您能解释一下如何复制吗?
johk95 2013年

Answers:


218

如果要将表从一个数据库复制到另一个数据库,只需执行以下操作。

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

2
如果表没有外键约束,那就是很好的解决方案。我用它来制作整个数据库而不是一个表的副本。为此,我建议使用mysqldump命令。
thorne51 2014年

MySQL现在可以将表数据存储在单个文件中(每个表也包含frm文件)。这种方法无疑会起作用,但是对于大型数据库而言,它的速度很慢。也许还有另一种方法吗?
Alex Kovshovik

1
仅当数据库位于同一服务器上时,此方法才有效。
zgr024

10

或者只是在MySQL 5中创建表db2.table SELECT * FROM db1.table


4
这不会复制诸如索引之类的东西。它仅基于一组元组创建一个表。您可能不想这样做。
2014年

是啊,这查询不拷贝indexe
XxXk5XxX

4

在BASH中,您可以执行以下操作:

mysqldump database_1 table | mysql database_2



1

只需使用-

CREATE TABLE DB2.newtablename SELECT * FROM DB1.existingtablename;


0

在命令行中:

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.