Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 9th, 2012  |  syntax: None  |  size: 0.92 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Find/replace in MySQL
  2. sites
  3.     site_id
  4.     url
  5.        
  6. UPDATE sites SET url=REPLACE(url, 'findUrl.com', 'replaceUrl.com');
  7.        
  8. DELIMITER $$
  9.  
  10. CREATE PROCEDURE `find_replace_in_all_tables`()
  11. BEGIN
  12.     DECLARE done INT DEFAULT 0;
  13.     DECLARE TABLE_NAME CHAR(255);
  14.     DECLARE COLUMN_NAME CHAR(255);
  15.  
  16.     DECLARE tables CURSOR for
  17.         SELECT table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE();
  18.  
  19.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  20.  
  21.     OPEN tables;
  22.     WHILE done = 0 DO
  23.         FETCH NEXT FROM tables INTO TABLE_NAME, COLUMN_NAME;
  24.  
  25.         IF done = 0 THEN
  26.             SET @SQL_TEXT = CONCAT("UPDATE `", TABLE_NAME, "` SET `", COLUMN_NAME, "`=REPLACE(`", COLUMN_NAME, "`, 'findUrl.com', 'replaceUrl.com');");
  27.  
  28.             PREPARE statement FROM @SQL_TEXT;
  29.             EXECUTE statement;
  30.             DEALLOCATE PREPARE statement;
  31.         END IF;
  32.     END WHILE;
  33.  
  34.     CLOSE tables;
  35. END