1_data_migration_offset.sql 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. -- 建立offset表,记录迁移的次数、上次迁移的id、偏移量用于增量时能够获取到每次偏移量的变化
  2. CREATE TABLE `data_migration_offset`(
  3. `id` INT(11) NOT NULL COMMENT '数据表ID',
  4. `table_name` VARCHAR(100) NOT NULL COMMENT '迁移的表名',
  5. `offset_num` BIGINT(20) NOT NULL comment '偏移量',
  6. `start_id` BIGINT(20) NOT NULL comment '起始id',
  7. `end_id` BIGINT(20) NOT NULL comment '终止ID',
  8. `crtime` datetime default CURRENT_TIMESTAMP NOT NULL comment '时间',
  9. PRIMARY KEY (`id`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  11. CREATE TABLE `meta_data`(
  12. `metadat_id` BIGINT(20) NOT NULL comment '元数据ID',
  13. `channel_id` BIGINT(20) NOT NULL comment '栏目ID',
  14. PRIMARY KEY (`metadat_id`)
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  16. DROP PROCEDURE
  17. IF
  18. EXISTS setOffset;
  19. DELIMITER $$
  20. CREATE PROCEDURE setOffset ( IN t_name VARCHAR ( 100 ), IN _offset BIGINT ( 20 ), IN _start_id BIGINT ( 20 ),
  21. IN _end_id BIGINT ( 20 )
  22. ) BEGIN
  23. SET @id = IFNULL( ( SELECT id FROM data_migration_offset WHERE table_name = t_name AND offset_num = _offset AND start_id = _start_id ), 0 );
  24. IF
  25. @id = 0 THEN
  26. INSERT INTO data_migration_offset ( id, table_name, offset_num, start_id, end_id ) SELECT
  27. IFNULL( max( id ), 0 ) + 1,
  28. t_name,
  29. _offset,
  30. _start_id,
  31. _end_id
  32. FROM
  33. data_migration_offset;
  34. ELSE
  35. UPDATE data_migration_offset
  36. SET end_id = _end_id
  37. WHERE
  38. id = @id ;
  39. END IF;
  40. END $$