复制表结构和数据

有时候我们需要清理一张表的所以数据,来测试某项功能,当测试完之后又需要恢复所以数据,那么就需要将这张表数据和结构进行备份了

网上搜索到复制表结构和数据都是

CREATE TABLE 表名 AS SELECT * FROM 表名_bak
#删除内容、释放空间但不删除定义,也就是数据表的结构还在
TRUNCATE TABLE  表名

如果只是进行备份,以上操作是完全够用的,如果还需要正常对备份表进行增删改查,那么备份不能如此简单粗暴。
以上方法只能将数据进行复制,关键字,主键自增AUTO_INCREMENT不会有。所以专门记录一下自己的方法和步骤。

一、首先需要创建一个和原表一样的备份表

CREATE TABLE 表名 (
`call_log_id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
`task_id` int(10) NOT NULL COMMENT '任务ID',
`content` varchar(1000) COLLATE utf8_bin DEFAULT '' COMMENT '备注',
`staff_id` varchar(32) COLLATE utf8_bin NOT NULL COMMENT '处理人',
`create_time` int(11) NOT NULL COMMENT '记录创建时间',
`update_time` int(11) NOT NULL COMMENT '记录修改时间',
`extend` varchar(200) COLLATE utf8_bin NOT NULL COMMENT '扩展数据',
`after_handle_state` smallint(6) DEFAULT '0',
PRIMARY KEY (`call_log_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1604 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='XXX表';

二、将原表数据插入备份表

INSERT INTO表名 SELECT * FROM 表名_bak

如果将几张表数据插入到一张新表里,那么数据迁移完成之后,需要重新设置AUTO_INCREMENT值

ALTER TABLE 表名 AUTO_INCREMENT=53;

删除表

#删除表
DROP TABLE

你可能感兴趣的:(复制表结构和数据)