首页 数据库 mysql

MySQL备份表数据,备份表名加上当前时间

我们经常会使用到备份数据表再操作相应数据表数据情况,那就可以写一个脚步进行,备份我们相应数据库表结构和数据,在对原本表进行操作,以防万一,操作不当。

1:如果只对数据进行备份,对表结构(主键,索引,id自增,字段非空等没做保留的情况下可以直接使用下面这个备份方法):

CREATE TABLE new_table_name AS SELECT * FROM table_name;

例子:对下面这个表进行一个备份

运行:

结果:


2:如果是备份当前完整表结构和数据:可以使用下面这个方法。

在MySQL5.1以上的版本中,prepare语句可以支持这样的操作。

  我们可以用set @var=...设置变量,然后用prepare stml from @var设置动态sql语句,最后用EXECUTE stml;执行语句。

下面是以时间为表名,动态备份一个表的sql执行过程:

SET @sqlstr = CONCAT( 'create table test_delete_data_', DATE_FORMAT( CURDATE(), '%Y_%m_%d' ), ' like test_delete_data' );

PREPARE stmt1

FROM

@sqlstr;

EXECUTE stmt1;

SET @sqlstr = CONCAT( 'insert into test_delete_data_', DATE_FORMAT( CURDATE(), '%Y_%m_%d' ), ' select * from test_delete_data' );

PREPARE stmt1

FROM

@sqlstr;

EXECUTE stmt1;

运行:


结果:



再说个删除操作语句:场景:要删除当前表与另外一张表相关联数据,保存不关联数据;

例子:还是以上面test_delete_data表为关联的表当例子,要删除的表名为:delete_table。

语句:delete delete_table from delete_table

where id in (select apply_id from test_delete_data);


相关推荐