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

24

Eu tenho alguns arquivos db3 do sqlite version3 que copiei de um sistema de produção em execução ao vivo (conheço sysadmin incorreto) por vários motivos. Existe algum comando sqlite que eu possa executar que verifique se todos os dados podem ser lidos nesses arquivos (não me importo se demorar um pouco).

Eu estava pensando em hackear alguns perl que despejam todos os dados e os reimportam para novos arquivos. Acho que o sqlite lançará uma exceção se encontrar dados corrompidos. Existe uma maneira melhor?

Estou CentOS 5.3 e sqlite-3.3.6-2

hellomynameisjoel
fonte

Respostas:

34

Eu acho que você quer tentar:

pragma integrity_check;

A partir da documentação :

Esse pragma faz uma verificação de integridade de todo o banco de dados. O pragma integridade_check procura registros fora de ordem, páginas ausentes, registros malformados, entradas de índice ausentes e erros de restrição UNIQUE e NOT NULL. Se o pragma integridade_check encontrar problemas, as strings serão retornadas (como várias linhas com uma única coluna por linha) que descrevem os problemas. [...]

Consulte também o comando PRAGMA quick_check, que faz a maior parte da verificação do PRAGMA integridade_check, mas executa muito mais rápido.

hernan43
fonte
3
Veja também sqlite.org/faq.html#q21
Teddy