Як переглянути файл бази даних SQLite на Mac
Ви знайшли десь на своєму Mac файл .sqlite, .db чи .sqlite3, у папці підтримки застосунку, у резервній копії, у проєкті, який налагоджуєте, і хочете дізнатися, що в ньому насправді. Подвійне клацання не робить нічого корисного. Quick Look показує порожній попередній перегляд або спотворений текст. Вам потрібен справжній переглядач файлів SQLite, і неочевидно, який інструмент обрати.
Чому не можна просто відкрити його як звичайний файл
Бази даних SQLite це двійкові файли, а не текст. Перші 100 байтів це фіксований заголовок: магічний рядок, що читається SQLite format 3, за яким ідуть поля на кшталт розміру сторінки, кодування тексту й cookie схеми, яка змінюється щоразу, коли структуру таблиці змінено. Після цього заголовка йдуть справжні дані сторінок, організовані як b-дерево, і саме тому текстовий редактор відображає їх як шум.
Quick Look у Finder нічого з цього не розбирає. TextEdit тлумачить це як звичайний текст і показує вам здебільшого нечитабельні символи з кількома розпізнаваними рядками (імена таблиць, імена стовпців і будь-які текстові дані, збережені в таблицях, зазвичай виживають, бо SQLite зберігає рядки переважно як є). Ніщо з цього не каже вам, чи файл насправді дійсний, з яким розміром сторінки його створено чи чому якийсь інший застосунок відмовляється його відкривати.
Ваші варіанти зазирнути всередину
Інструмент командного рядка sqlite3. macOS постачається із sqlite3 у Terminal. Виконайте sqlite3 yourfile.db ".schema", і ви отримаєте визначення таблиць, або .tables для швидкого переліку. Це добре працює, якщо ви вже знаєте, що це дійсна база даних, і хочете зробити до неї запит. Це менш корисно, якщо ви не впевнені, що файл узагалі дійсний, бо пошкоджений заголовок просто видає загадкову помилку без деталей про те, що не так.
DB Browser for SQLite. Це правильний інструмент, якщо ваша справжня мета це перегляд рядків таблиць, редагування даних чи виконання запитів SQL. Він безкоштовний, добре підтримуваний і створений саме для цієї роботи. Якщо вам треба досліджувати дані всередині таблиць, припиняйте це читати й беріть DB Browser.
Шістнадцятковий редактор з розумінням SQLite. Це варіант для іншого запитання: не «що в таблицях», а «що це за файл насправді». Саме цю прогалину заповнює Hexter. Відкрийте файл, і він читається лише для читання за замовчуванням, тож ви не ризикуєте файлом просто дивлячись. Вкладка «Аналіз» розпізнає заголовок SQLite з першого погляду й розкладає поля, розмір сторінки, кодування, cookie схеми, поруч із сирим шістнадцятковим кодом, тож ви можете підтвердити, що файл справді SQLite, перевірити, з яким розміром сторінки його побудовано, або помітити заголовок, який було обрізано чи перезаписано, перш ніж узагалі передати його чомусь, що очікує чисту базу даних.
Коли перегляд сирих байтів справді має значення
Кілька ситуацій, де побачити заголовок безпосередньо, а не лише результати запиту, заощаджує час:
- Файл не відкривається у вашому застосунку, і ви не впевнені, що це насправді SQLite. Деякі застосунки записують файли з розширенням
.db, які взагалі не є SQLite. Перевірка на магічний рядокSQLite format 3у перших 16 байтах відповідає на це за секунди. - Ви налагоджуєте конвеєр синхронізації чи резервного копіювання і підозрюєте, що файл обрізало чи пошкодило під час передачі. Заголовок, який обрізано, або поле розміру сторінки, що не відповідає фактичному розміру файлу, це швидка діагностика.
- Ви хочете підтвердити кодування тексту бази даних (UTF-8 чи UTF-16), перш ніж писати код, що її читає, не запускаючи повну бібліотеку баз даних лише щоб поставити одне запитання.
- Ви реверсуєте локальне сховище застосунку і хочете побачити точно, що на диску, перш ніж вирішувати, чи варто писати належний запит SQL до нього.
Як це зробити
- Відкрийте файл
.sqliteчи.dbв Hexter. Він відкривається лише для читання, тож немає ризику випадково змінити базу даних, яка потрібна вам цілою. - Відкрийте бічну панель інспектора й перемкніться на вкладку «Аналіз».
- Hexter виявляє заголовок SQLite автоматично й показує вам розібрані поля поруч зі зміщеннями байтів, з яких вони походять.
- Якщо вам треба ближче поглянути на конкретне поле, як-от розмір сторінки чи cookie схеми, виділіть ці байти в шістнадцятковій сітці, і інспектор покаже вам числове тлумачення безпосередньо.
Якщо ж вам насправді потрібно після цього зробити запит до таблиць, ось де ви перемикаєтеся на sqlite3 чи DB Browser. Це правильні інструменти для тієї роботи. Hexter для тих десяти секунд перед нею, коли вам просто треба знати, на що ви дивитеся.
Hexter це рідний для macOS шістнадцятковий редактор, створений, щоб зробити саме такий огляд файлів безпечним за замовчуванням: лише для читання, доки ви явно не ввімкнете редагування, з вбудованим розбором структур для файлів SQLite, PNG, ZIP, Mach-O та WAV.