여러 가지 이유로 라이브 실행중인 프로덕션 시스템 (나쁜 sysadmin 나쁜 sysadmin을 알고 있음)을 복사 한 sqlite version3 db3 파일이 있습니다. 실행할 수있는 sqlite 명령이 있습니까?이 파일에서 모든 데이터를 읽을 수 있는지 확인합니다 (시간이 걸리더라도 신경 쓰지 않습니다).
나는 모든 데이터를 버리고 새로운 파일로 다시 가져 오는 펄을 해킹하는 것을 고려하고있었습니다. sqlite는 손상된 데이터가 발생하면 예외를 throw 할 것이라고 생각합니다. 더 좋은 방법이 있습니까?
저는 CentOS 5.3 및 sqlite-3.3.6-2입니다
답변
나는 당신이 시도하고 싶다고 생각합니다.
pragma integrity_check;
로부터 문서 :
이 pragma는 전체 데이터베이스의 무결성 검사를 수행합니다. integrity_check pragma는 비 순차적 레코드, 누락 된 페이지, 형식이 잘못된 레코드, 누락 된 색인 항목 및 UNIQUE 및 NOT NULL 제한 조건 오류를 찾습니다. integrity_check pragma가 문제점을 발견하면 문제점을 설명하는 문자열이 리턴됩니다 (행당 하나의 열이있는 여러 행으로). […]
대부분의 PRAGMA integrity_check 점검을 수행하지만 훨씬 빠르게 실행되는 PRAGMA quick_check 명령 도 참조하십시오 .