2011-02-09 2 views

답변

1

쉬운 방법은 없지만 정보 스키마를 사용하여 모든 varchar 열을 찾을 수 있습니다.

SELECT table_name, column_name 
FROM information_schema.columns 
WHERE data_type = 'varchar'; 

그러면 용어를 검색하기 위해 실행해야하는 쿼리 목록을 생성하는 쿼리를 작성할 수 있습니다.

SELECT CONCAT(
    'select ', column_name, 
    ' from ', table_name, 
    ' where ', column_name, ' like \'%foo%\'' 
) AS stmt 
FROM information_schema.columns 
WHERE data_type = 'varchar'; 

보다 진보 된 예제는 테이블 및 열 이름과 함께 결과 테이블에 일치 항목을 삽입 할 수 있습니다.

0

MySQL에 대한 저장 프로 시저가 있습니다 (http://forge.mysql.com/tools/tool.php?id=232). 출력 저장을위한 테이블을 만든 다음 information_schema 데이터베이스의 COLUMNS 테이블을 반복하여 모든 데이터베이스의 테이블과 열 이름을 가져옵니다. 그런 다음 조건에 맞는 적절한 검색 문자열을 사용하여 각 열에 대해 database.table에 대한 쿼리 () 쿼리를 실행합니다. count ()> 0 일 경우 해당 perticular 열에는 검색어가 있으므로 해당 세 겹 (데이터베이스 이름, 테이블 이름, 열 이름)을 테이블에 삽입합니다. 마지막 테이블에서 *를 선택하여 해당 데이터베이스 테이블과 검색 용어가있는 열 이름을 봅니다.

0

매우 간단한 방법으로 발견했습니다.

mysqldump -u user -p mydatabase | grep foo

관련 문제