Skip to content

Instantly share code, notes, and snippets.

@kevinquillen
Created July 10, 2017 17:38
Show Gist options
  • Save kevinquillen/8ef864f95f1f521962e672b760a76bbe to your computer and use it in GitHub Desktop.
Save kevinquillen/8ef864f95f1f521962e672b760a76bbe to your computer and use it in GitHub Desktop.
Does a mass find+replace on Drupal field_*_value fields within tables - useful for when you need to replace a string in a huge amount of tables.
CREATE PROCEDURE replaceFieldTextTo (IN v_string_from VARCHAR(255), IN v_string_to VARCHAR(255))
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE table_name_value VARCHAR(64);
DECLARE column_name_value VARCHAR(64);
DECLARE cursor_fields CURSOR FOR SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'field_%_value';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cursor_fields;
ColumnList: LOOP
FETCH cursor_fields INTO table_name_value, column_name_value;
IF done THEN
Leave ColumnList;
END IF;
SET @sql = CONCAT('UPDATE ', table_name_value, ' SET ', column_name_value, ' = replace(', column_name_value, ', "', v_string_from, '", "', v_string_to ,'")');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE cursor_fields;
END;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment