Làm cách nào để xác minh rằng tệp db3 SQLite hợp lệ / nhất quán


24

Tôi có một số tệp db3 phiên bản sqlite tôi đã sao chép từ một hệ thống sản xuất đang chạy trực tiếp (tôi biết sysadmin xấu sysadmin) vì nhiều lý do. Có một số lệnh sqlite tôi có thể chạy sẽ xác minh rằng tất cả dữ liệu có thể được đọc ra khỏi các tệp này (tôi không phiền nếu phải mất một thời gian).

Tôi đã xem xét việc hack một số perl để loại bỏ tất cả dữ liệu và sau đó nhập lại vào các tệp mới. Tôi nghĩ rằng sqlite sẽ ném một ngoại lệ nếu nó gặp dữ liệu bị hỏng. Có cách nào tốt hơn?

Tôi là CentOS 5.3 và sqlite-3.3.6-2

Câu trả lời:


34

Tôi nghĩ bạn muốn thử:

pragma integrity_check;

Từ tài liệu :

Pragma này thực hiện kiểm tra tính toàn vẹn của toàn bộ cơ sở dữ liệu. Các pragma vẹn_check tìm kiếm các bản ghi không theo thứ tự, các trang bị thiếu, các bản ghi không đúng định dạng, các mục chỉ mục bị thiếu, và các lỗi ràng buộc UNIQUE và KHÔNG NULL. Nếu pragma vẹn_check tìm thấy vấn đề, chuỗi được trả về (dưới dạng nhiều hàng với một cột trên mỗi hàng) mô tả các vấn đề. [...]

Xem thêm lệnh quick_check PRAGMA thực hiện hầu hết việc kiểm tra PRAGMA vẹn_check nhưng chạy nhanh hơn nhiều.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.