本文档主要是描述怎么在一系列条件下将home_brand_manual_pdf的数据插入到brand_shuomingshu表中
1.首先数据的插入涉及到三张表,分别是home_brand(品牌),home_brand_manual_pdf(品牌pdf手册),brand_shuomingshu(品牌说明书)(此表刚开始没数据,是空表)
2.表结构分别介绍
home_brand( 品牌):
home_brand_manual_pdf (品牌pdf手册):
brand_shuomingshu(品牌说明书)
3.表迁移需要的一系列条件:
home_brand_manual_pdf与brand_shuomingshu表列以及home_brand的关系如下
(1)列对应满足以下关系
home_brand_manual_pdf |
brand_shuomingshu |
home_brand |
id |
pdfId | |
brandId |
| id(很重要) |
name |
pdfName | |
url |
url | |
downloadUrl |
downloadUrl | |
site | site | |
appId |
appId | |
path |
pdfPath | |
siteMemo |
memo | |
size |
pdfSize | |
error | pdfError | |
totals | pdfTotals | |
check | pdfCheck | |
text | pdfText | |
status | pdfStatus | |
createUser |
createUser | |
createDate |
createDate | |
updateDate |
updateDate | |
updateUser | updateUser |
千万注意:
brandId列的值: 通过brand_shuomingshu.brandName到home_brand表中,根据name查询,得到brand信息,将对应的id,作为home_brand_manual_pdf.brandId
(2)过滤条件brand_shuomingshu表:status > 0 and pdfStatus > 0(即只需要将该条件下的数据迁移到brand_shuomingshu中)
4.通过存储过程迁移数据,通过navicat(mysql可视化根据)建立的存储过程如下(假设存储过程名字为test):
BEGIN
-- 需要定义接收游标数据的变量
DECLARE idp VARCHAR(255);
DECLARE brandIdp VARCHAR(255);
DECLARE namep VARCHAR(1000);
DECLARE urlp VARCHAR(1000);
DECLARE downloadUrlp VARCHAR(1000);
DECLARE sitep VARCHAR(255);
DECLARE appIdp VARCHAR(255);
DECLARE pathp VARCHAR(255);
DECLARE siteMemop VARCHAR(255);
DECLARE sizep BIGINT(255);
DECLARE errorp VARCHAR(255);
DECLARE totalsp int(10);
DECLARE checkp int(11);
DECLARE textp int(11);
DECLARE statusp TINYINT(255);
DECLARE createUserp VARCHAR(255);
DECLARE createDatep TIMESTAMP;
DECLARE updateDatep TIMESTAMP;
DECLARE updateUserp VARCHAR(255);
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT
brand_shuomingshu.pdfId AS id,
home_brand.id AS brandId,
brand_shuomingshu.pdfName AS `name`,
brand_shuomingshu.url AS url,
brand_shuomingshu.downloadUrl AS downloadUrl,
brand_shuomingshu.site AS site,
brand_shuomingshu.appId AS appId,
brand_shuomingshu.pdfPath As path,
brand_shuomingshu.memo AS siteMemo,
brand_shuomingshu.pdfSize AS size,
brand_shuomingshu.pdfError AS error,
brand_shuomingshu.pdfTotals AS totals,
brand_shuomingshu.pdfCheck AS `check`,
brand_shuomingshu.pdfText AS text,
brand_shuomingshu.pdfStatus AS `status`,
brand_shuomingshu.createUser AS createUser,
brand_shuomingshu.createDate AS createDate,
brand_shuomingshu.updateUser AS updateUser,
brand_shuomingshu.updateDate AS updateDate
from brand_shuomingshu,home_brand where brand_shuomingshu.brandName = home_brand.`name` AND brand_shuomingshu.`status` >0
AND brand_shuomingshu.pdfStatus>0;
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur;
-- 开始循环
read_loop: LOOP
-- 提取游标里的数据
FETCH cur INTO idp,brandIdp,namep,urlp,downloadUrlp,sitep,appIdp,pathp,siteMemop,sizep,errorp,totalsp,checkp,textp,statusp,createUserp,createDatep,updateUserp,updateDatep;
-- 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF;
-- 这里做你想做的循环的事件
INSERT INTO home_brand_manual_pdf VALUES (idp,brandIdp,namep,urlp,downloadUrlp,sitep,appIdp,pathp,siteMemop,sizep,errorp,totalsp,checkp,textp,statusp,createUserp,createDatep,updateUserp,updateDatep);
END LOOP;
-- 关闭游标
CLOSE cur;
END
然后执行该存储过程call test即可