2011-08-27 2 views
0

데이터 마이그레이션 프로젝트에서 누락 된 데이터를 찾고 있는데이 보고서는 상당히 도움이 될 것입니다.테이블의 각 열에 비어 있지 않은 값 계산

MySQL 테이블이 주어지면 해당 테이블의 각 행에있는 모든 빈 (NULL 또는 ') 값을 계산하고 싶습니다. 출력은 열 이름 목록과 각 열의 빈 행 또는 비어 있지 않은 행 수입니다. 이 데이터는 수동으로 소스 테이블과 비교할 것입니다. 수동으로 계산할 수는 거의 없으므로 이 정확히이고 소스와 가져온 테이블간에 열 이름이 완전히 다릅니다.

나는 약 30 개의 테이블을 검사 할 것이고, 몇 개는 100 개의 열을 가지고있다. 내 PC에서 직접 MySQL에 액세스 할 수 있지만 데이터베이스에있는 모든 스크립트를 서버에서 실행하는 액세스 권한이 없습니다.

Col1 Col2 Col3 
'XX' NULL 'XX' 
'XX' NULL '' 
'XX' 'XX' 'XX' 
'XX' '' 'XX' 

내가 원하는 것이 보고서는 TableA의에 대한

예 ('비 비어 카운트에 대한'는 빈으로 계산) :

Col1: 4 
Col2: 1 
Col3: 3 
+0

내가 PHP 스크립트와 결국 그것을 해결하기위한

SELECT COUNT(NULLIF(Column_Name, '')) from Table_name 
Jason

+0

솔루션이 다른 사람에게 유용 할 경우를 대비하여 여기에 게시했습니다. http://academe.co.uk/2011/08/mysql-finding-counts-of-data-by-columns/ (원본 파일을 업로드하고 방법을 알아 내면 구문 ​​강조를 수정합니다.) – Jason

답변

2

당신은 각 테이블에 대해 다음 쿼리를 사용할 수 있습니다

SELECT COUNT(*), COUNT(col1) as col1, COUNT(col2) as col2 
FROM TABLE1 

특정 테이블에 대해 모든 열을 가져 오려면 쿼리

0123을 실행해야합니다.
select column_name from information_schema.columns where TABLE_NAME='TABLE1'; 

첫 번째 검색어와 같은 자동 생성 검색어에 사용할 수있는 검색어입니다.

+0

100 열 이상의 테이블을 작성하는 데 많은 도움이 될 수 있습니다. ;) @ Jason :하지만 스크립팅 언어에 익숙하다면 [Heidi SQL] (http://www.heidisql.com/)과 같은 도구를 사용하여 스크립트를 생성하여 제출할 수 있습니다. –

+0

그러면 나에게 -null count, 좋은 시작입니다. MySQL은 빈 문자열을 NOT NULL로 취급하지만 (Oracle과 달리). 대상 시스템은 NULL을 자유롭게 사용하여 "여기에 데이터가 없음"을 의미하는 것으로 보이므로 마이그레이션되지 않은 데이터를 찾기 위해 NULL이 아닌 값을 찾는 데 의존 할 수 없습니다. 그것은 좋은 시작이지만, 나는 텍스트 편집기에서 몇 가지 검색 및 대체와 함께 노크 할 수 있습니다. – Jason

+1

데이터베이스 서버의 방화벽에 구멍을 뚫어 웹 서버에 PHP5 스크립트를 작성할 수 있습니다. 이 스크립트 스크립팅을 피할 수 없을 것 같습니다. – Jason

7

COUNT 카운트 빈 문자열을 너무, 그래서 당신의 쿼리는 다음과 같아야합니다

SELECT COUNT(NULLIF(col1, '')), COUNT(NULLIF(col2, '')), ... 
+0

감사합니다. 필자는 결국 카운트를 일련의 쿼리로 분할하여 자동화하기 쉽도록했습니다 (각 행은 테이블 셀에 표시 될 수있는 열 개수였습니다). – Jason

1

카운트 행 값만 (건너 뛰기 널/빈 행)이있는! 나

SELECT count(NULLIF(doctor_id, '')) as doctor_count,count(NULLIF(chemist_id, '')) as chemistcount from table_name WHERE employee_id="20"; 
0

일했다. 각 테이블마다 반복 한 다음 테이블의 각 열마다 반복 한 다음 열이 NOT NULL이고 비어 있지 않은 문자열 또는 숫자 인 테이블에 대해 COUNT (*)를 수행합니다. 결과는 스프레드 시트로 잘 복사되는 HTML 테이블에 저장됩니다. 그것은 많은 쿼리를 포함하지만 작동합니다.
관련 문제