Recientemente he tenido que buscar un texto en todos los campos de todas las tablas de MySQL por que no sabia donde se estaba haciendo el insert. UNa de las primeras soluciones fue este procedimiento.

  1. ## Table for storing resultant output
  2. CREATE TABLE `temp_details` (
  3. `t_schema` varchar(45) NOT NULL,
  4. `t_table` varchar(45) NOT NULL,
  5. `t_field` varchar(45) NOT NULL
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  7. ## Procedure for search in all fields of all databases
  8. DELIMITER $$
  9. #Script to loop through all tables using Information_Schema
  10. DROP PROCEDURE IF EXISTS get_table $$
  11. CREATE PROCEDURE get_table(in_search varchar(50))
  12. READS SQL DATA
  13. BEGIN
  14. DECLARE trunc_cmd VARCHAR(50);
  15. DECLARE search_string VARCHAR(250);
  16. DECLARE db,tbl,clmn CHAR(50);
  17. DECLARE done INT DEFAULT 0;
  18. DECLARE COUNTER INT;
  19. DECLARE table_cur CURSOR FOR
  20. SELECT concat(‘SELECT COUNT(*) INTO @CNT_VALUE FROM `’,table_schema,’`.`’,table_name,’` WHERE `’, column_name,’` REGEXP ”’,in_search,”’;’)
  21. ,table_schema,table_name,column_name
  22. FROM information_schema.COLUMNS
  23. WHERE TABLE_SCHEMA NOT IN (‘information_schema’,’test’,’mysql’);
  24. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
  25. #Truncating table for refill the data for new search.
  26. PREPARE trunc_cmd FROM “TRUNCATE TABLE temp_details;”;
  27. EXECUTE trunc_cmd ;
  28. OPEN table_cur;
  29. table_loop:LOOP
  30. FETCH table_cur INTO search_string,db,tbl,clmn;
  31. #Executing the search
  32. SET @search_string = search_string;
  33. SELECT  search_string;
  34. PREPARE search_string FROM @search_string;
  35. EXECUTE search_string;
  36. SET COUNTER = @CNT_VALUE;
  37. SELECT COUNTER;
  38. IF COUNTER>0 THEN
  39. # Inserting required results from search to table
  40. INSERT INTO temp_details VALUES(db,tbl,clmn);
  41. END IF;
  42. IF done=1 THEN
  43. LEAVE table_loop;
  44. END IF;
  45. END LOOP;
  46. CLOSE table_cur;
  47. #Finally Show Results
  48. SELECT * FROM temp_details;
  49. END $$
  50. DELIMITER ;

Via:http://kedar.nitty-witty.com/blog/search-through-all-databases-tables-columns-in-mysql

 

Otra opcion fue un proyecto de google todo en php que me gusto bastante, lo colocas en la ruta de apache, accedes a traves de tu explorador, pones los datos de tu BD de mysql usuario y password y seguidamente el texto a bucar.

 

http://code.google.com/p/anywhereindb/downloads/detail?name=anywhereindb.php

Por admin

Deja una respuesta

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock