我想复制一个非常大的表格,但我不想逐行复制它。有没有办法复制它?在MYSQL中复制表格,但一次不复制一行
例如,您可以截断W/O删除行/列,所以我想知道是否有用于复制整个表类似
UPDATE:逐行插入是很痛苦的(因为120M行) 。无论如何要避免这一点?
我想复制一个非常大的表格,但我不想逐行复制它。有没有办法复制它?在MYSQL中复制表格,但一次不复制一行
例如,您可以截断W/O删除行/列,所以我想知道是否有用于复制整个表类似
UPDATE:逐行插入是很痛苦的(因为120M行) 。无论如何要避免这一点?
MySQL不再具有可靠的“复制表”功能 - 其中很多原因与数据存储方式有关。但是,下面是逐行插入,但很简单:
CREATE TABLE `new_table` LIKE `old_table`;
INSERT INTO `new_table` (SELECT * FROM `old_table`);
您可以使用INSERT INTO ... SELECT
。
不幸的是,这不会像@AvatarKava提供的答案,因为这不会像auto_increment复制属性... – 2010-05-19 17:03:56
Mrh?我们的答案是一样的,除了@ AvatarKava提到了我只暗示的创建表行(这也是我为什么选择了它们),并且我又将其链接到文档。否则,我们说的是完全一样的东西。 Ø@。 – pinkgothic 2010-05-19 17:11:21
INSERT INTO TABLE2 SELECT * FROM TABLE1
不幸的是,这不会像@AvatarKava提供的答案,因为这不会复制像auto_increment这样的属性... – 2010-05-19 17:04:37
那么,复制这些的唯一方法是重新创建他们imo ..但是真实的,没办法。 – modz0r 2010-05-19 18:00:12
如果您使用的是MyISAM,则可以将物理文件复制到磁盘上。重新启动服务,您将拥有带索引的新表,并且所有内容都相同。
我正在使用innodb。这是否适用? – 2010-05-19 17:03:24
不幸的是:( – AvatarKava 2010-05-19 17:04:20
为什么不呢?好奇! – 2010-05-19 17:05:46
复制大型表格并不重要;最终数据库可能需要重建它。
在InnoDB中,唯一的方法是真正重建它,这意味着插入...选择或类似,但是,对于120M行,因为它将在单个事务中发生,您可能会超出回滚的大小区域,这会导致插入失败。
mysqldump后面是重命名原始表,然后恢复转储应该工作,因为mysqldump可能会导致提交每行很多。但是它会很慢。
预言:
从original_table
+1 ninja'ing我创建表T作为选择*。 [笑] – pinkgothic 2010-05-19 16:59:25
哎。我有一张大桌子,而且一排一排的插入很痛苦 – 2010-05-19 17:00:35
我讨厌这个! :) – AvatarKava 2010-05-19 17:01:06