Como posso verificar se um arquivo SQLite db3 é válido / consistente

19

Eu tenho alguns arquivos sqlite version3 db3 que eu copiei de um sistema de produção em execução (eu sei que o bad sysadmin bad sysadmin) por várias razões. Existe algum comando sqlite que eu possa executar para verificar se todos os dados podem ser lidos a partir desses arquivos (não me importo se demorar um pouco).

Eu estava pensando em invadir algum perl que copia todos os dados e os reimporta em novos arquivos. Eu acho que o sqlite lançará uma exceção se encontrar dados corrompidos. Existe uma maneira melhor?

Eu sou o CentOS 5.3 e o sqlite-3.3.6-2

    
por hellomynameisjoel 14.05.2009 / 03:32

1 resposta

28

Eu acho que você quer tentar:

pragma integrity_check;

Na documentação :

This pragma does an integrity check of the entire database. The integrity_check pragma looks for out-of-order records, missing pages, malformed records, missing index entries, and UNIQUE and NOT NULL constraint errors. If the integrity_check pragma finds problems, strings are returned (as multiple rows with a single column per row) which describe the problems. [...]

See also the PRAGMA quick_check command which does most of the checking of PRAGMA integrity_check but runs much faster.

    
por 14.05.2009 / 03:41