Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2014
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. DBNAME=${1}
  2. SPNAME=${2}
  3. SPFILE=${DBNAME}_${SPNAME}.sql
  4. SPTEMP=${DBNAME}_${SPNAME}.tmp
  5. MYSQL_CONN="-u... -p..."
  6. SQLSTMT="SELECT COUNT(1) FROM mysql.proc WHERE db='${DBNAME}' AND name='${SPNAME}'"
  7. PROC_EXISTS=`mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" | awk '{print $1}'`
  8. if [ ${PROC_EXISTS} -eq 1 ]
  9. then
  10. SQLSTMT="SELECT type FROM mysql.proc WHERE db='${DBNAME}' AND name='${SPNAME}'"
  11. PROC_TYPE=`mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" | awk '{print $1}'`
  12. SQLSTMT="SHOW CREATE ${PROC_TYPE} ${DBNAME}.${SPNAME}G"
  13. mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" > ${SPFILE}
  14.  
  15. #
  16. # Remove Top 3 Lines
  17. #
  18. LINECOUNT=`wc -l < ${SPFILE}`
  19. (( LINECOUNT -= 3 ))
  20. tail -${LINECOUNT} < ${SPFILE} > ${SPTEMP}
  21.  
  22. #
  23. # Remove Bottom 3 Lines
  24. #
  25. LINECOUNT=`wc -l < ${SPTEMP}`
  26. (( LINECOUNT -= 3 ))
  27. head -${LINECOUNT} < ${SPTEMP} > ${SPFILE}
  28. else
  29. echo "Stored Procedure ${DBNAME}.${SPNAME} Does Not Exist"
  30. fi
  31. rm -f ${SPTEMP}
  32.  
  33. [root@***]# ./GetMyProc.sh common DMSPushers
  34. [root@***]# cat common_DMSPushers.sql
  35. CREATE DEFINER=`pma`@`10.%` PROCEDURE `DMSPushers`()
  36. BEGIN
  37.  
  38. DECLARE cntr INT DEFAULT 0;
  39. DECLARE dealerName VARCHAR(50);
  40. DECLARE dealerID INT;
  41.  
  42. DECLARE done boolean DEFAULT false;
  43. DECLARE dealers CURSOR FOR SELECT bdd.dealer_id, ta.name FROM `b_dealer__dmsaccount` bdd left join t_dmsaccount ta on bdd.dmsaccount_id = ta.id where ta.dms_type = 1 order by bdd.dealer_id desc;
  44.  
  45. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := true;
  46.  
  47. OPEN dealers;
  48.  
  49. read_loop: LOOP
  50. FETCH dealers INTO dealerID, dealerName;
  51. SET cntr = cntr + 1;
  52.  
  53. IF done OR cntr > 200 THEN
  54. LEAVE read_loop;
  55. END IF;
  56.  
  57. IF dealerID > 0 AND dealerID < 664 THEN
  58. IF dealerName IS NULL THEN
  59. SET dealerName = '';
  60. END IF;
  61. SET dealerName = REPLACE(dealerName,'''','''''');
  62.  
  63. -- Does the Database even exist???
  64. SET @query = CONCAT('SELECT COUNT(SCHEMA_NAME) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = ''D',dealerID,''' INTO @schemaExists');
  65. PREPARE stmt1 FROM @query;
  66. EXECUTE stmt1;
  67.  
  68. IF @schemaExists > 0 THEN
  69. SET @query = CONCAT('INSERT dealers_that_push (dealerID, dealerName, pushDate) SELECT ', dealerID, ',''', dealerName ,''',date FROM D',dealerID,'.contactLog where message like ''%pushed to the DMS%''');
  70. PREPARE stmt1 FROM @query;
  71. EXECUTE stmt1;
  72. END IF;
  73.  
  74. END IF;
  75.  
  76. END LOOP;
  77.  
  78. CLOSE dealers;
  79. END
  80. [root@***]#
  81.  
  82. MYSQL_CONN="-u... -p..."
  83. SQLSTMT="SELECT COUNT(1) FROM mysql.proc"
  84. PROCCOUNT=`mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" | awk '{print $1}'`
  85. if [ ${PROCCOUNT} -eq 0 ] ; then exit ; fi
  86. SPLIST=""
  87. for DBSP in `mysql ${MYSQL_CONN} -ANe"SELECT CONCAT(type,'@',db,'.',name) FROM mysql.proc"`
  88. do
  89. SPLIST="${SPLIST} ${DBSP}"
  90. done
  91. for TYPEDBSP in `echo "${SPLIST}"`
  92. do
  93. DB=`echo "${TYPEDBSP}" | sed 's/@/ /' | sed 's/./ /' | awk '{print $2}'`
  94. SP=`echo "${TYPEDBSP}" | sed 's/@/ /' | sed 's/./ /' | awk '{print $3}'`
  95. SQLSTMT=`echo "SHOW CREATE ${TYPEDBSP}G" | sed 's/@/ /'`
  96. SPFILE=${DB}_${SP}.sql
  97. SPTEMP=${DB}_${SP}.tmp
  98. echo Echoing ${SQLSTMT} into ${SPFILE}
  99. mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" > ${SPFILE}
  100. #
  101. # Remove Top 3 Lines
  102. #
  103. LINECOUNT=`wc -l < ${SPFILE}`
  104. (( LINECOUNT -= 3 ))
  105. tail -${LINECOUNT} < ${SPFILE} > ${SPTEMP}
  106. #
  107. # Remove Bottom 3 Lines
  108. #
  109. LINECOUNT=`wc -l < ${SPTEMP}`
  110. (( LINECOUNT -= 3 ))
  111. head -${LINECOUNT} < ${SPTEMP} > ${SPFILE}
  112. rm -f ${SPTEMP}
  113. done
  114. ls -l
  115.  
  116. mysqldump --compact --no-create-info
  117. --where="db='serialize' AND type='PROCEDURE' AND name IN ('sp_abraca_dabra')"
  118. --databases mysql --tables proc > outputfile.sql
  119.  
  120. mysql --user=root mydb -e "SHOW CREATE PROCEDURE myprocedure;" > myprocedure.sql
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement