3_sp_data_migration_xwcmmaterial.sql 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. use trs_data_migration;
  2. DROP PROCEDURE IF EXISTS sp_data_migration_xwcmmaterial;
  3. DELIMITER $$
  4. CREATE PROCEDURE sp_data_migration_xwcmmaterial(IN prevAppendixId BIGINT(20),
  5. IN appendixIdOffset BIGINT(20),
  6. IN docIdOffset BIGINT(20))
  7. BEGIN
  8. DECLARE isover INT DEFAULT 0;
  9. DECLARE migr_table_name varchar(255) DEFAULT 'xwcmmaterial';
  10. DECLARE f_APPENDIXID int(11) DEFAULT 0;
  11. DECLARE f_APPDOCID int(11) DEFAULT 0;
  12. DECLARE f_APPFLAG smallint(6) DEFAULT NULL;
  13. DECLARE f_APPFILE varchar(255) DEFAULT 0;
  14. DECLARE f_AppFromId int(11) DEFAULT '0';
  15. DECLARE f_AppFromType int(11) DEFAULT '0';
  16. DECLARE f_CRUSER varchar(50) DEFAULT NULL;
  17. DECLARE f_CRTIME datetime DEFAULT NULL;
  18. DECLARE cur CURSOR FOR
  19. SELECT
  20. a.MATERIALQUOTEID,
  21. a.DOCID,
  22. b.MATERIALTYPE,
  23. b.FILENAME,
  24. b.MASID,
  25. b.CrUser,
  26. b.CrTime
  27. FROM
  28. trs_data_migration.xwcmmaterialquote a
  29. LEFT JOIN trs_data_migration.xwcmmaterial b ON a.MATERIALID = b.MATERIALID
  30. WHERE b.MATERIALTYPE IN (1, 2)
  31. ORDER BY
  32. a.MATERIALQUOTEID ASC;
  33. DECLARE CONTINUE HANDLER FOR NOT FOUND SET isover = 1;
  34. OPEN cur;
  35. FETCH cur INTO
  36. f_APPENDIXID,
  37. f_APPDOCID,
  38. f_APPFLAG,
  39. f_APPFILE,
  40. f_AppFromId,
  41. f_CRUSER,
  42. f_CRTIME
  43. ;
  44. select concat('开始迁移 ', migr_table_name) info;
  45. WHILE isover = 0 DO
  46. # 断点续传
  47. IF (f_APPENDIXID > prevAppendixId)
  48. THEN
  49. SET @APPENDIXID = f_APPENDIXID;
  50. SET f_APPENDIXID = f_APPENDIXID + appendixIdOffset;
  51. SET @doc_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = migr_table_name AND start_id < f_APPDOCID and end_id >= f_APPDOCID), docIdOffset);
  52. SET f_APPDOCID = f_APPDOCID + @doc_offset_num;
  53. IF (f_APPFLAG = 1)
  54. THEN
  55. SET f_APPFLAG = 80;
  56. SET f_AppFromId = 0;
  57. SET f_AppFromType = 0;
  58. END IF;
  59. IF (f_APPFLAG = 2)
  60. THEN
  61. SET f_APPFLAG = 90;
  62. SET f_APPFILE = f_AppFromId;
  63. SET f_AppFromType = 1;
  64. END IF;
  65. insert into trs_hycloud_iip.wcmappendix
  66. (
  67. APPENDIXID,
  68. APPDOCID,
  69. APPFILE,
  70. APPFILETYPE,
  71. APPFLAG,
  72. CRUSER,
  73. CRTIME,
  74. AppFromType,
  75. AppFromId
  76. )
  77. VALUES
  78. (
  79. f_APPENDIXID,
  80. f_APPDOCID,
  81. f_APPFILE,
  82. -1,
  83. f_APPFLAG,
  84. f_CRUSER,
  85. f_CRTIME,
  86. f_AppFromType,
  87. f_AppFromId
  88. );
  89. SET @log_sql = trs_data_migration.build_migration_log_sql(migr_table_name, @APPENDIXID, now());
  90. prepare stmt from @log_sql;
  91. EXECUTE stmt;
  92. deallocate prepare stmt;
  93. call trs_data_migration.setOffset(migr_table_name, appendixIdOffset, prevAppendixId, @APPENDIXID);
  94. END IF ;
  95. FETCH cur INTO
  96. f_APPENDIXID,
  97. f_APPDOCID,
  98. f_APPFLAG,
  99. f_APPFILE,
  100. f_AppFromId,
  101. f_CRUSER,
  102. f_CRTIME
  103. ;
  104. END WHILE;
  105. CLOSE cur;
  106. select concat('完成迁移 ', migr_table_name) info;
  107. END $$
  108. DELIMITER ;