Advertisement
Guest User

Untitled

a guest
Oct 7th, 2015
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. use smart_data_db;
  2.  
  3. DELIMITER $$
  4.  
  5. DROP PROCEDURE IF EXISTS `debug_msg` $$
  6. DROP PROCEDURE IF EXISTS test $$
  7.  
  8. CREATE PROCEDURE debug_msg(enabled INTEGER, msg VARCHAR(255))
  9. BEGIN
  10. IF enabled THEN BEGIN
  11. select concat("** ", msg) AS '** DEBUG:';
  12. END; END IF;
  13. END $$
  14. CREATE PROCEDURE test()
  15. block1: BEGIN
  16. DECLARE done INT;
  17. DECLARE count_debug INT;
  18. DECLARE person_name VARCHAR(100);
  19. DECLARE person_alias VARCHAR(100);
  20. DECLARE project_code VARCHAR(20);
  21. DECLARE author_name VARCHAR(100);
  22. DECLARE normalizations CURSOR FOR SELECT DISTINCT
  23. person.name, tct.alias, CONCAT('WOS:000', php.project_id), authors.name
  24. FROM
  25. graph.temp_conversion_table tct
  26. INNER JOIN
  27. graph.person ON tct.person_id = person.id
  28. INNER JOIN
  29. graph.project_has_person php ON php.person_id = tct.person_id
  30. INNER JOIN
  31. smart_data_db.isi_publication_author_institutions ipai ON ipai.isi_publication_UT = CONCAT('WOS:000', php.project_id)
  32. AND ipai.signature = graph.person.name
  33. INNER JOIN
  34. smart_data_db.authors ON smart_data_db.authors.id = ipai.author_id
  35. ORDER BY tct.date DESC , tct.alias;
  36. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
  37. SET done = 0;
  38. SET count_debug = 0;
  39.  
  40. OPEN normalizations;
  41. loop1: LOOP
  42. FETCH normalizations INTO person_name, person_alias, project_code, author_name;
  43. IF done = 1 THEN LEAVE loop1; END IF;
  44. SET count_debug = count_debug + 1;
  45. IF (count_debug%1000)= 0 THEN CALL debug_msg(TRUE, CONCAT("PROCESADAS: ",count_debug)); END IF;
  46. IF author_name != person_alias THEN
  47. INSERT INTO smart_data_db.authors (name) SELECT 'name' FROM smart_data_db.authors WHERE NOT EXISTS (SELECT * FROM smart_data_db.authors WHERE name=person_alias) LIMIT 1;
  48. UPDATE smart_data_db.isi_publication_author_institutions SET author_id=(SELECT id FROM smart_data_db.authors WHERE smart_data_db.authors.name=person_alias LIMIT 1) WHERE smart_data_db.isi_publication_author_institutions.isi_publication_UT = project_code AND smart_data_db.isi_publication_author_institutions.signature = person_name;
  49. END IF;
  50. END LOOP loop1;
  51.  
  52. CLOSE normalizations;
  53. SELECT @ipais;
  54. END block1 $$
  55.  
  56. DELIMITER ;
  57.  
  58. CALL test();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement