ฉันจะตรวจสอบได้อย่างไรว่าไฟล์ SQLite db3 นั้นถูกต้อง / สอดคล้องกัน


24

ฉันมีไฟล์ db3 version3 sqlite ที่ฉันคัดลอกออกจากระบบการผลิตที่ทำงานอยู่ (ฉันรู้ว่า sysadmin bad sysadmin) ด้วยเหตุผลหลายประการ มีคำสั่ง sqlite ที่ฉันสามารถเรียกใช้ที่จะตรวจสอบว่าข้อมูลทั้งหมดสามารถอ่านได้จากไฟล์เหล่านี้ (ฉันไม่รังเกียจหากใช้เวลาสักครู่)

ฉันกำลังพิจารณาแฮ็กอัพเพอร์เพิลซึ่งทิ้งข้อมูลทั้งหมดแล้วนำเข้ามันลงในไฟล์ใหม่ ฉันคิดว่า sqlite จะโยนข้อยกเว้นหากพบข้อมูลที่เสียหาย มีวิธีที่ดีกว่า?

ฉัน CentOS 5.3 และ sqlite-3.3.6-2

คำตอบ:


34

ฉันคิดว่าคุณต้องการลอง:

pragma integrity_check;

จากเอกสาร :

pragma นี้ทำการตรวจสอบความสมบูรณ์ของฐานข้อมูลทั้งหมด pragma integrity_check ค้นหาเรคคอร์ดที่ไม่เป็นไปตามลำดับเพจที่หายไปเรคคอร์ดที่ผิดรูปแบบรายการดัชนีที่หายไปและข้อผิดพลาด UNIQUE และ NOT NULL หาก integrity_check pragma พบปัญหาสตริงจะถูกส่งคืน (เป็นหลายแถวที่มีคอลัมน์เดียวต่อแถว) ซึ่งอธิบายถึงปัญหา [ ... ]

ดูเพิ่มเติมที่คำสั่งPRAGMA quick_checkซึ่งทำการตรวจสอบส่วนใหญ่ของ PRAGMA integrity_check แต่ทำงานได้เร็วขึ้นมาก


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.