小记mysql备份同库中一张表的历史记录

mysql备份同库中一张表的历史记录 insert into …select

需求

如今有个这么一个需求。mysql中有个表。数据增长的非常快。可是呢这个数据有效期也就是1个月,一个月曾经的记录不太重要了,可是又不能删除。为了保证这个表的查询速度,须要一个简单的备份表,把数据倒进去。

代码

于是我写了一个小脚本,用来做定时任务。把这个表某段时间的数据备份到备份表中。核心就是个简单的sql。

下面以新表(test_table_new)和旧表(test_table_old)为例

CREATE TABLE IF NOT EXISTS `test_table_new` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `pic_url` varchar(200) NOT NULL,

  `pic_thumb` varchar(200) DEFAULT NULL,

  `pic_desc` varchar(200) DEFAULT NULL,

  `borough_id` int(11) NOT NULL,

  `creater` varchar(20) DEFAULT NULL,

  `addtime` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`),

  KEY `borough_id` (`borough_id`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=97289 ;

备份1

Insert into Table2(field1,field2,...) select value1,value2,... from Table1
>	例子
Insert into test_table_new select * from test_table_old where `borough_id`>=10266 and `borough_id`

备份2

Select * Into new_table_name from old_table_name;
>	测试
Select * Into test_table_new1 from test_table_old where `borough_id`>=10266 and `borough_id` <=12354
  • 执行后错误
    错误:
#1327 - Undeclared variable: test_table_new

网上找到提示要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中

删除新表,再次执行

还是错误,查一下发现原来 mysql 数据库是不支持 SELECT INTO FROM 这种语句的,但是经过研究是可以通过另外一种变通的方法解决这个问题的

备份3

Create table Table2 (Select * from Table1);

Create table pic_test (Select *  from test_table_old where `borough_id`>=10266 and `borough_id` <=12354);

欢天喜地,执行成功

猜你喜欢

转载自blog.csdn.net/agonie201218/article/details/105411033