3_sp_data_migration_wcmchannelsyn.sql 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. DROP PROCEDURE IF EXISTS sp_data_migration_wcmchannelsyn;
  2. DELIMITER $$
  3. CREATE PROCEDURE sp_data_migration_wcmchannelsyn(IN prevChannelSynId BIGINT(20),
  4. IN channelSynIdOffset BIGINT(20),
  5. IN channelIdOffset BIGINT(20))
  6. BEGIN
  7. DECLARE isover INT DEFAULT 0;
  8. DECLARE migr_table_name varchar(255) DEFAULT 'wcmchannelsyn';
  9. DECLARE channel_migr_table_name varchar(255) DEFAULT 'wcmchannel';
  10. DECLARE f_CHANNELSYNID int(11) DEFAULT NULL;
  11. DECLARE f_SRCCHANNEL int(11) DEFAULT NULL;
  12. DECLARE f_TOCHANNEL int(11) DEFAULT NULL;
  13. DECLARE f_WHERESQL varchar(500) DEFAULT NULL;
  14. DECLARE f_SDATE datetime DEFAULT NULL;
  15. DECLARE f_EDATE datetime DEFAULT NULL;
  16. DECLARE f_DOCSDATE datetime DEFAULT NULL;
  17. DECLARE f_DOCEDATE datetime DEFAULT NULL;
  18. DECLARE f_STATUSES varchar(300) DEFAULT NULL;
  19. DECLARE f_ATTRIBUTE varchar(500) DEFAULT NULL;
  20. DECLARE f_SYNTYPES varchar(50) DEFAULT 'NEW';
  21. DECLARE f_OPERAFTER int(11) DEFAULT '0';
  22. DECLARE f_CLASSINFOIDS varchar(100) DEFAULT NULL ;
  23. DECLARE cur CURSOR FOR
  24. SELECT
  25. CHANNELSYNID,
  26. SRCCHANNEL,
  27. TOCHANNEL,
  28. WHERESQL,
  29. SDATE,
  30. EDATE,
  31. DOCSDATE,
  32. DOCEDATE,
  33. STATUSES,
  34. ATTRIBUTE,
  35. SYNTYPES,
  36. OPERAFTER,
  37. null
  38. FROM wcmchannelsyn
  39. ORDER BY CHANNELSYNID ASC ;
  40. DECLARE CONTINUE HANDLER FOR NOT FOUND SET isover = 1;
  41. OPEN cur;
  42. FETCH cur INTO
  43. f_CHANNELSYNID,
  44. f_SRCCHANNEL,
  45. f_TOCHANNEL,
  46. f_WHERESQL,
  47. f_SDATE,
  48. f_EDATE,
  49. f_DOCSDATE,
  50. f_DOCEDATE,
  51. f_STATUSES,
  52. f_ATTRIBUTE,
  53. f_SYNTYPES,
  54. f_OPERAFTER,
  55. f_CLASSINFOIDS
  56. ;
  57. select concat('开始迁移 ', migr_table_name) info;
  58. WHILE isover= 0 DO
  59. # 断点续传
  60. IF (f_CHANNELSYNID > prevChannelSynId)
  61. THEN
  62. SET @CHANNELSYNID = f_CHANNELSYNID;
  63. SET f_CHANNELSYNID = f_CHANNELSYNID + channelSynIdOffset;
  64. SET @src_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = channel_migr_table_name AND start_id < f_SRCCHANNEL and end_id >= f_SRCCHANNEL), channelIdOffset);
  65. SET f_SRCCHANNEL = f_SRCCHANNEL + @src_offset_num;
  66. SET @to_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = channel_migr_table_name AND start_id < f_TOCHANNEL and end_id >= f_TOCHANNEL), channelIdOffset);
  67. SET f_TOCHANNEL = f_TOCHANNEL + @to_offset_num;
  68. insert into trs_hycloud_iip.wcmchannelsyn
  69. (
  70. CHANNELSYNID,
  71. SRCCHANNEL,
  72. TOCHANNEL,
  73. WHERESQL,
  74. SDATE,
  75. EDATE,
  76. DOCSDATE,
  77. DOCEDATE,
  78. STATUSES,
  79. ATTRIBUTE,
  80. SYNTYPES,
  81. OPERAFTER,
  82. CLASSINFOIDS
  83. )
  84. VALUES
  85. (
  86. f_CHANNELSYNID,
  87. f_SRCCHANNEL,
  88. f_TOCHANNEL,
  89. f_WHERESQL,
  90. f_SDATE,
  91. f_EDATE,
  92. f_DOCSDATE,
  93. f_DOCEDATE,
  94. f_STATUSES,
  95. f_ATTRIBUTE,
  96. f_SYNTYPES,
  97. f_OPERAFTER,
  98. f_CLASSINFOIDS
  99. );
  100. SET @log_sql = build_migration_log_sql(migr_table_name, @CHANNELSYNID, now());
  101. prepare stmt from @log_sql;
  102. EXECUTE stmt;
  103. deallocate prepare stmt;
  104. call setOffset(migr_table_name, channelSynIdOffset, prevChannelSynId, @CHANNELSYNID);
  105. END IF ;
  106. FETCH cur INTO
  107. f_CHANNELSYNID,
  108. f_SRCCHANNEL,
  109. f_TOCHANNEL,
  110. f_WHERESQL,
  111. f_SDATE,
  112. f_EDATE,
  113. f_DOCSDATE,
  114. f_DOCEDATE,
  115. f_STATUSES,
  116. f_ATTRIBUTE,
  117. f_SYNTYPES,
  118. f_OPERAFTER,
  119. f_CLASSINFOIDS
  120. ;
  121. END WHILE;
  122. CLOSE cur;
  123. select concat('完成迁移 ', migr_table_name) info;
  124. END $$
  125. DELIMITER ;