2011-04-30 6 views
1

내 프로그램은 SQL 파일에서 MySQL 데이터베이스를 복원합니다. 프로그램에서 SQL 실행 진행 상황을 표시하려면 파일에서 SQL 문의 수를 알아야합니다. 어떻게 MySQL에서 이것을 할 수 있습니까? (쿼리는 mysql 특정 다중 행 삽입 문으로 구성 될 수 있습니다.)텍스트 파일의 SQL 문의 수를 계산하는 방법은 무엇입니까?

MySQL 명령 행 도구 또는 Python API를 사용할 수 있습니다. 다른 DBMS 용 솔루션도 게시하실 수 있습니다.

+1

SQL 데이터에 따라 '진술'이 단순하거나 복잡하거나 많은 양의 데이터가 있거나없는 경우 ... 진행 표시기가 일관되지 않을 수 있습니다. – Henry

+0

이 쿼리 수 기반 접근 방식의 한계를 잘 알고 있습니다. 그렇지 않으면 진행율을 % 또는 진행률 표시 줄에 어떻게 표시 하시겠습니까? – Imran

답변

4

간단한 (쉬운) 방법 : SQL 스크립트 파일에 PRINT 문을 추가하여 진행 메시지를 표시하십시오.

이점은 (명백히 '다중 구문 구문 분석이 어렵다'는 점을 제외하면) 진행 상황을 정확하게 제어 할 수 있다는 것입니다. 예를 들어, 일부 명령문은 다른 명령문보다 실행하는 데 시간이 오래 걸리므로 명령문에 가중치를 주어야합니다.

실행 된 명령문의 수와 관련하여 진도를 생각하지 않습니다. 내가하고있는 일은 '테이블 동기화 중', '저장된 프로 시저 X 업데이트'등과 같은 특정 작업이 시작되고 완료되었다는 피드백을 출력하는 것입니다.

2

순진한 해결책은 파일의 세미콜론 수를 계산하는 것입니다 (또는 파일에서 분리 문자로 사용 된 다른 문자).

삽입하는 데이터에 많은 세미콜론이있는 경우를 제외하면 일반적으로 잘 작동합니다. 그런 다음 SQL의 실제 구문 분석 (두통)을 처리해야합니다.

관련 문제