며칠 전 나는 sqlite3 데이터베이스를 사용하여 많은 데이터를 삭제 한 후 (전체 테이블 (DROP
)) 파일 크기가 변경되지 않았다는 사실을 알게되었습니다 (테이블이 5MB로 변경됨). 내가 묻는 데이터베이스는 아니지만 아마도 내 질문과 관련이 있습니다.sqlite 데이터베이스에서 모든 데이터를 검색하는 방법은 무엇입니까?
특정 메시지에 대해 grep -a
을 사용하여 데이터베이스를 찾고 있는데, 성공적으로 문제가되는 데이터베이스가 50MB 크기 인 것을 발견했습니다. 완벽하게 보입니다! 그러나 sqlite3 데이터베이스 뷰어 (또는 sqlite3
명령 줄 도구)에서 데이터베이스를 열면 messages
테이블에 800 개가 넘는 항목 만 표시됩니다. 현재 자동 증가 인덱스는 테이블에 있어야하는 항목의 양인 18.000 이상입니다. grep
으로 .db 파일을 살펴보면, 내가 원하는 모든 것이 거기에있는 것 같지만, 어떻게 든 "숨겨져 있습니다"(?)라고 추측하고 있습니다.
어떻게 sqlite 데이터베이스에서 모든 데이터를 검색 할 수 있습니까? .dump <table>
에는 내가 찾는 메시지가 포함되어 있지 않습니다. 이것에 대한 간단한 설명과 데이터가 실제로 삭제되지 않는 이유는/파일 크기가 5MB 테이블을 삭제해도 줄어들지 않는다는 것입니다. 감사 할지라도 말입니다.
sqlite> .dbinfo
database page size: 4096
write format: 1
read format: 1
reserved bytes: 0
file change counter: 366
database page count: 11405
freelist page count: 10372
schema cookie: 2
schema format: 4
default cache size: 0
autovacuum top root: 0
incremental vacuum: 0
text encoding: 1 (utf8)
user version: 7
application id: 0
software version: 3008005
number of tables: 3
number of indexes: 1
number of triggers: 0
number of views: 0
schema size: 737
은 (는 인스 타 그램의 직접 메시지 데이터베이스입니다, 내가 만들지 않은 것을 참고도 지금이 데이터베이스를 편집했다.)
잘못된 질문을하는 것 같습니다. 삭제 한 데이터는 검색 할 수 없으며 삭제 된 메시지를 검색하는 것은 의미가 없습니다. 어쩌면 [How to vacuum sqlite database?] (https://stackoverflow.com/q/18126997/608639)를 먼저 시도해야합니다. – jww
내가하고 싶은 일은 진공의 반대입니다. 허용 된 답변에 대한 마지막 의견을 확인하여 지금 내 요구 사항에 맞게 끝내 었는지 확인하십시오. 나는 데이터를 직접 삭제하지 않았고, instagram은 캐시에서 메시지를 아주 빨리 삭제하는 것 같습니다. 진공은 확실히 나가 또한 이렇게 흥미있는 무언가이다 그래서 연결을 위해 당신을 감사하십시오! – confetti