2010-05-17 6 views
0

SQL 전체 데이터베이스를 텍스트로 덤핑하고 검색하는 것만 큼, 어떤 테이블/레코드를 모르는 경우 MySQL 데이터베이스의 모든 테이블에서 특정 하위 문자열을 검색 할 수있는 방법이 있습니까?/부분 문자열 실제로 발생하는 필드?모든 테이블에서 특정 하위 문자열 검색

답변

1

몇 가지 아이디어 :

당신은 일부 외부 전체 텍스트 검색 기능을 사용할 수 있습니다, 같은

http://www.sphinxsearch.com/로는 바이너리 로그를 검색 할 수 있습니다. 명령문 기반 로깅을 사용하면 매우 간단합니다.

데이터 파일 자체를 검색하는 것은 지저분하고 더러워 지겠지만 대부분 그 부분에서 효과가있을 것입니다. 극도로 YMMV!

모든 테이블의 모든 텍스트 열을 식별하는 알고리즘을 생각한 다음 OMG이 해당 열에 대해 몇 가지 쿼리를 작성한다고 지적 할 수 있습니다.

아마도 바이너리 로그를 검색 할 것입니다 (당연히 가지고 있다고 가정). 데이터베이스 괴괴 망측을 연구 할 때 상황에 고유 한 하위 문자열이 있는지 로그에서 검색 한 다음 문제의 정확한 문을 제로로 지정할 수 있습니다.

2

텍스트 파일로 덤핑하면 검색은 가장 복잡한 방법이 가장 짧습니다. &

다른 대안은 표준 SQL에서 쿼리 할 테이블 목록을 반복 할 수 없기 때문에 동적 SQL (MySQL의 준비된 문)을 사용해야한다는 것입니다. 또한 모든 열이 VARCHAR/문자열 기반이되는 것은 아니므로 LIKE %your_substring%/등을 시도하기 전에 필터링해야합니다.

관련 문제