在MYSQL中复制表而不一次复制一行

时间:2010-05-19 16:56:10

标签: mysql database duplicates

我想复制一个非常大的表,但我不想逐行复制它。有没有办法复制它?

例如,你可以TRUNCATE没有删除行/行,所以我想知道复制整个表是否有类似的东西

更新:逐行插入非常痛苦(因为120M行)。无论如何要避免这种情况?

6 个答案:

答案 0 :(得分:5)

MySQL不再具有可靠的“复制表”功能 - 许多原因与数据的存储方式有关。但是,下面会逐行插入,但非常简单:

CREATE TABLE `new_table` LIKE `old_table`;
INSERT INTO `new_table` (SELECT * FROM `old_table`);

答案 1 :(得分:4)

您可以使用INSERT INTO ... SELECT

答案 2 :(得分:2)

如果您正在使用MyISAM,则可以复制磁盘上的物理文件。重新启动服务,您将获得带有索引的新表,并且所有内容都相同。

答案 3 :(得分:1)

INSERT INTO TABLE2 SELECT * FROM TABLE1

答案 4 :(得分:1)

复制一张大桌子并不重要;最终数据库可能需要重建它。

在InnoDB中,唯一的方法是重建它,这意味着插入...选择或类似,但是,由于它将在单个事务中发生120M行,您可能会超过回滚区域的大小,这将导致插入失败。

mysqldump然后重命名原始表,然后恢复转储应该工作,因为mysqldump可能导致每批行提交。但它会很慢。

答案 5 :(得分:0)

预言:

将表格t作为select * from original_table

创建