本文檔主要是描述怎么在一系列條件下將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即可