我是靠谱客的博主 无聊石头,最近开发中收集的这篇文章主要介绍mysql 存储过程实现从一张表数据迁移到另一种表 ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

    本文档主要是描述怎么在一系列条件下将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):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

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.`nameAND 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即可

最后

以上就是无聊石头为你收集整理的mysql 存储过程实现从一张表数据迁移到另一种表 的全部内容,希望文章能够帮你解决mysql 存储过程实现从一张表数据迁移到另一种表 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部