首页  >  文章  >  数据库  >  mysql中用于数据迁移存储过程分享

mysql中用于数据迁移存储过程分享

WBOY
WBOY原创
2016-06-07 18:03:301043浏览

mysql数据迁移用的一个存储过程,需要朋友收藏的可以下。

代码如下:
DELIMITER $$
使用 `servant_591up`$$
如果存在 `sp_move_data`$$ 则删除过程
创建过程 `sp_move_data`()
BEGIN
DECLARE v_exit INT默认 0;
声明 v_spid BIGINT;
声明 v_id BIGINT;
声明 i INT 默认为 0;
声明c_table INT;
声明 v_UniqueKey VARCHAR(57);
声明 v_TagCatalogId INT;
声明 v_RootCatalogId INT;
声明 v_UserId BIGINT;
声明 v_QuestionId CHAR(36);
声明 v_CorrectCount INT;
声明 v_ErrorCount INT;
声明 v_LastIsCorrect INT;
声明 v_LastAnswerXML 文本字符集 utf8;
声明 v_TotalCostTime INT;
声明 v_Reviews VARCHAR(200) CHARSET utf8;
声明 v_AnswerResultCategory INT;
声明 v_LastCostTime INT;
声明 v_LastAnswerTime DATETIME;
声明 v_IsPublic INT;
声明 v_SUBJECT INT;
声明 v_TotalCount INT;
声明 v_AnswerMode SMALLINT(6);
声明 v_ExerciseWeight FLOAT;
声明 c_ids 游标用于选择 UniqueKey、TagCatalogId、RootCatalogId、UserId、QuestionId、CorrectCount、ErrorCount、LastIsCorrect、LastAnswerXML、TotalCostTime、评论、AnswerResultCategory、LastCostTime、LastAnswerTime、IsPublic、SUBJECT、TotalCount、AnswerMode、ExerciseWeight 来自 ol _answerresult_56;
声明未找到集 v_exit=1 的继续处理程序;
打开c_ids;
重复
将 c_ids 提取到 v_UniqueKey、v_TagCatalogId、v_RootCatalogId、v_UserId、v_QuestionId、v_CorrectCount、v_ErrorCount、v_LastIsCorrect、v_LastAnswerXML、v_TotalCostTime、v_Reviews、v_AnswerResultCategory、v_LastCostTime、v_ LastAnswerTime,v_IsPublic,v_SUBJECT,v_TotalCount,v_AnswerMode,v_ExerciseWeight;
IF v_exit = 0 THEN
SET @vv_id = v_id;
选择 MOD(v_UserId,100) INTO c_table;
SET @SQL_CONTEXT =
CONCAT('INSERT INTO new_answerresult_',
c_table,'
(UniqueKey,TagCatalogId,RootCatalogId,UserId,QuestionId,CorrectCount,ErrorCount,LastIsCorrect,LastAnswerXML,TotalCostTime,评论, AnswerResultCategory,LastCostTime,LastAnswerTime,IsPublic,SUBJECT,TotalCount,AnswerMode,ExerciseWeight)values(',
'''',v_UniqueKey,'''',',',
v_TagCatalogId,',',
v_RootCatalogId,',',
v_UserId,',',
'''',v_QuestionId,'''',',',
v_CorrectCount,',',
v_ErrorCount,' ,',
v_LastIsCorrect,',',
'''',v_LastAnswerXML,'''',',',
v_TotalCostTime,',',
'''',REPLACE( IFNULL(v_Reviews,''),'''',''),'''',',',
v_AnswerResultCategory,',',
v_LastCostTime,',',
''' ',v_LastAnswerTime,'''',',',
v_IsPublic,',',
v_SUBJECT,',',
v_TotalCount,',',
v_AnswerMode,',',
v_ExerciseWeight,')');
从@SQL_CONTEXT准备STMT;
执行STMT;
解除分配准备 STMT;
结束如果;
设置 i=i 1;
#100
#IF MOD(i,100)=0 THEN COMMIT;
#END IF;
直到 v_exit=1
结束重复;
关闭c_ids;
#COMMIT;
END$$
分隔符;
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn