복붙노트

[SQL] MySQL의 쿼리 문자열에 대한 데이터베이스 내의 모든 테이블을 검색하려면?

SQL

MySQL의 쿼리 문자열에 대한 데이터베이스 내의 모든 테이블을 검색하려면?

데이터베이스 내의 모든 테이블을 검색 할 수있는 MySQL의 쿼리가 있습니까?

당신은 MySQL의 워크 벤치 GUI에서 데이터베이스 내의 모든 테이블을 검색 할 수 있습니다 그렇지 않다면?

phpMyAdmin을에서 당신을 통해 검색 할 모든 테이블을 선택하는 데 사용할 수있는 검색 패널이있다. 나는 젠토 이후, 내가 함께 일하고 있어요 전자 상거래 패키지는 테이블과 다른 제품 세부 수백 다른 테이블에 가지고이 매우 효과적 찾을 수 있습니다.

해결법

  1. ==============================

    1.어떤 프로그래밍 언어의 도움없이, MySQL은 순전히을하고 싶은 경우에, 당신은이를 사용할 수 있습니다 :

    어떤 프로그래밍 언어의 도움없이, MySQL은 순전히을하고 싶은 경우에, 당신은이를 사용할 수 있습니다 :

    ## Table for storing resultant output
    
    CREATE TABLE `temp_details` (
     `t_schema` varchar(45) NOT NULL,
     `t_table` varchar(45) NOT NULL,
     `t_field` varchar(45) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    ## Procedure for search in all fields of all databases
    DELIMITER $$
    #Script to loop through all tables using Information_Schema
    DROP PROCEDURE IF EXISTS get_table $$
    CREATE PROCEDURE get_table(in_search varchar(50))
     READS SQL DATA
    BEGIN
     DECLARE trunc_cmd VARCHAR(50);
     DECLARE search_string VARCHAR(250);
    
     DECLARE db,tbl,clmn CHAR(50);
     DECLARE done INT DEFAULT 0;
     DECLARE COUNTER INT;
    
     DECLARE table_cur CURSOR FOR
     SELECT concat('SELECT COUNT(*) INTO @CNT_VALUE FROM `',table_schema,'`.`',table_name,'` WHERE `', column_name,'` REGEXP ''',in_search,''';')
     ,table_schema,table_name,column_name
     FROM information_schema.COLUMNS
     WHERE TABLE_SCHEMA NOT IN ('information_schema','test','mysql');
    
     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
    
     #Truncating table for refill the data for new search.
     PREPARE trunc_cmd FROM "TRUNCATE TABLE temp_details;";
     EXECUTE trunc_cmd ;
    
     OPEN table_cur;
     table_loop:LOOP
     FETCH table_cur INTO search_string,db,tbl,clmn;
    
     #Executing the search
     SET @search_string = search_string;
     SELECT search_string;
     PREPARE search_string FROM @search_string;
     EXECUTE search_string;
    
    
     SET COUNTER = @CNT_VALUE;
     SELECT COUNTER;
    
     IF COUNTER>0 THEN
     # Inserting required results from search to table
     INSERT INTO temp_details VALUES(db,tbl,clmn);
     END IF;
    
     IF done=1 THEN
     LEAVE table_loop;
     END IF;
     END LOOP;
     CLOSE table_cur;
    
     #Finally Show Results
     SELECT * FROM temp_details;
    END $$
    DELIMITER ;
    

    출처 : http://forge.mysql.com/tools/tool.php?id=232

  2. ==============================

    2.당신은 MySQL의 워크 벤치를 사용하는 경우, 당신은 ... "검색 테이블 데이터를"다음에 검색 할 DB 스키마를 마우스 오른쪽 클릭을 수행하여이 작업을 수행 할 수 있습니다.

    당신은 MySQL의 워크 벤치를 사용하는 경우, 당신은 ... "검색 테이블 데이터를"다음에 검색 할 DB 스키마를 마우스 오른쪽 클릭을 수행하여이 작업을 수행 할 수 있습니다.

    거기에서 당신은 "REGEX를 사용하여 검색"옵션을 선택하고 평소와 같이 검색 텍스트를 입력 할 수 있습니다. 그것은 특정 텍스트와 일치하는 DB 행을 제공 할 것입니다.

    당신은뿐만 아니라 상자 "모든 유형의 검색 열"을 확인해야합니다.

  3. ==============================

    3.데이터베이스가 큰없는 경우 또는, 당신은 덤프을하고 .SQL 생성 된 파일에서 검색을 할 수 있습니다.

    데이터베이스가 큰없는 경우 또는, 당신은 덤프을하고 .SQL 생성 된 파일에서 검색을 할 수 있습니다.

  4. ==============================

    4.MySQL의 워크 벤치에서는 테이블 데이터 검색 기능을 사용할 수 있습니다. 그것은 여러 테이블 및 / 또는 여러 데이터베이스를 검색 할 수 있습니다.

    MySQL의 워크 벤치에서는 테이블 데이터 검색 기능을 사용할 수 있습니다. 그것은 여러 테이블 및 / 또는 여러 데이터베이스를 검색 할 수 있습니다.

  5. ==============================

    5.데이터베이스의 모든 테이블에서 검색 문자열은 복잡한 작업입니다. 일반적으로 정확히 모든 테이블을 사용할 필요가 없습니다 및 결과는 특정 레이아웃 (나무 테이블의 일치 또는 같은)없이 읽을 복잡

    데이터베이스의 모든 테이블에서 검색 문자열은 복잡한 작업입니다. 일반적으로 정확히 모든 테이블을 사용할 필요가 없습니다 및 결과는 특정 레이아웃 (나무 테이블의 일치 또는 같은)없이 읽을 복잡

    SQL 워크 벤치 / J는 GUI와 같은 작업을 할 수있는 명령 줄 버전을 제공합니다 :

    더 많은 정보:

    참고 :이 제대로 구성되지 않은 경우 JDBC 드라이버 검색은 많은 메모리를 사용합니다. SQL 워크 벤치 / J는 그것에 대해 경고하고 온라인 문서는 오래된 조금 있지만, 문서의 소스 (문서 / XML / DB-problems.xml는) 다른 BBDD을 위해 그것을 해결하는 방법을 설명합니다 :

    포스트 그레스 여기 추출물 :

  6. from https://stackoverflow.com/questions/7523039/mysql-query-to-search-all-tables-within-a-database-for-a-string by cc-by-sa and MIT license