MySQL用存储过程备份数据库表

数据库: MySQL5.1

操作工具:SQLyog企业版

 

首先在一个数据库中有一张user表,里面有一些数据,我们想把它通过存储过程备份到user_arc(本来没有的表)中。储存过程的sql如下:

 

DELIMITER $$

USE `nn`$$

DROP PROCEDURE IF EXISTS `arcUser`$$
-- 上面是自动生成的

CREATE DEFINER=`root`@`localhost` PROCEDURE `arcUser`(IN orgitable CHAR(10))
-- 这里传入将被备份的数据库表名字 orgitable
BEGIN
    SET @stmt = CONCAT("create table ",orgitable,"_arc","(Select * from user);");
-- 因为我们用orgitable代表数据库表名,所以不能用普通的语句如:create table orgitable + "_arc" (Select * from orgitable)
    PREPARE stmt FROM @stmt;
    EXECUTE stmt;
    END$$

DELIMITER ;

 

然后去call这个arcUser,把要备份的表名传进去啊,例如“User”.

 

注:Oracle10g实现这个功能和mySQL的有所不同,如下:

create or replace package body pdc is

procedure arcUser(tableName varchar2)
as

createSQL varchar2(200);
begin
createSQL := 'create table '||tableName||'_arc as select * from '||tableName||';
-- 注意,这里连接字符串应该用||,而不是java中的+
execute immediate createSQL;
commit;
end;

end; 

 

 

 

                                                                                        by  NN  2009-10-13

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值