- PVSM.RU - https://www.pvsm.ru -

Удобный софт для работы с файлами SQLite

«Маленькая. Быстрая. Надёжная. Выбери любые три». Так говорят про SQLite. На скриншоте — менеджер SQLiteStudio

«Маленькая. Быстрая. Надёжная. Выбери любые три». Так говорят про SQLite. На скриншоте — менеджер SQLiteStudio

Все мы любим SQLite [1]. Это идеальный движок БД, быстрая [2] компактная библиотека размером менее 1 МБ [3], автономная [4] и практически неубиваемая [5]. Это вообще удобный способ хранения информации [6], поскольку СУБД выигрывает у файловой системы по скорости доступа, сжатию [7], функциональности полнотекстового поиска и т. д. Например, она вдвое быстрее [8] файловой системы Ext4 под Linux.

SQLite — самая популярная в мире СУБД [9]. Как уже рассказывалось в статье «Безумные и забавные факты о SQLite» [10], в мире активно используется более триллиона (!) БД SQLite, это невероятное число. Просто она встроена во все смартфоны, браузеры, операционные системы и бесчисленное число других приложений.

Как гласит официальный сайт [11], SQLite — это библиотека на языке C, которая реализует полнофункциональный [12] SQL-движок базы данных.

Формат файлов SQLite [13] стабилен, кроссплатформен и обратно совместим, и разработчики обязуются поддерживать его до 2050 года [14]. Файлы БД SQLite часто используются в качестве контейнеров для передачи [6] контента [7] между системами [15] и в качестве архивного формата для долгосрочного хранения [16].

Исходный код SQLite [17] находится в общественном достоянии вообще без лицензии и доступен всем для использования в любых целях. Забавно, что проект поддерживают всего три человека [18], которые не допускают внешних контрибьюторов. В данный момент имена авторов держатся в секрете и удалены с официального сайта во избежание сталкинга.

Последняя версия библиотеки SQLite — 3.50.1 [19], от 6 июня 2025 года.

Среди всех программных компонентов и библиотек SQLite входит в пятёрку самых популярных в мире, вместе с оригинальной реализацией zlib [20], оригинальным libpng [21] и официальной библиотекой Libjpeg [22]. На этих компонентах держится современная IT-индустрия: библиотеки для графики PNG и JPEG, сжатие данных zlib и наша СУБД SQLite.

Формат файлов

SQLite используется как формат файлов для самых разных приложений [15]: системы контроля версий, инструменты финансового анализа, редакторы медиафайлов, CAD-пакеты, программы для ведения учёта и т. д. Традиционная команда «Открыть файл» в приложении просто вызывает sqlite3_open(). Обновления происходят автоматически по мере изменения содержимого приложения.

Как мы уже упоминали, SQLite в качестве формата файлов имеет множество преимуществ [6], это действительно серьёзная СУБД [23]:

Удобный софт для работы с файлами SQLite - 2
  • Небольшие изменения перезаписывают только те части файла, которые изменяются, что сокращает время записи и износ SSD.

  • Чтение и обновление контента лаконичными SQL-запросами.

  • Формат файла может быть расширен в будущих версиях просто добавлением новых таблиц и/или столбцов, с сохранением обратной совместимости.

  • Приложения могут использовать полнотекстовый поиск [26], индексы RTREE [27], а также триггеры для реализации автоматизированного стека undo/redo [28]:

Вот полнотекстовый поиск:

create virtual table books_fts
using fts5(title, author, publisher);

insert into books_fts
select title, author, publisher from books;

select
  author,
  substr(title, 1, 30) as title,
  substr(publisher, 1, 10) as publisher
from books_fts
where books_fts match 'ann'
limit 5;
┌─────────────────────┬────────────────────────────────┬────────────┐
│       author        │             title              │ publisher  │
├─────────────────────┼────────────────────────────────┼────────────┤
│ Ruby Ann Boxcar     │ Ruby Ann's Down Home Trailer P │ Citadel    │
│ Ruby Ann Boxcar     │ Ruby Ann's Down Home Trailer P │ Citadel    │
│ Lynne Ann DeSpelder │ The Last Dance: Encountering D │ McGraw-Hil │
│ Daniel Defoe        │ Robinson Crusoe                │ Ann Arbor  │
│ Ann Thwaite         │ Waiting for the Party: The Lif │ David R. G │
└─────────────────────┴────────────────────────────────┴────────────┘
  • Файл приложения переносим между всеми операционными системами и архитектурами.

  • Несколько процессов подключаются к одному файлу, читают и пишут данные, не мешая друг другу.

  • Разнообразный контент из кучи файлов инкапсулируется в один файл для более простой передачи.

  • Содержимое обновляется непрерывно и атомарно, чтобы минимизировать потери при отключении питания или сбое.

  • SQL-запросы в несколько раз меньше эквивалентного процедурного кода, и поскольку количество ошибок на строку кода примерно постоянно, это означает меньшее количество ошибок в целом.

  • Содержимое БД SQLite можно просматривать с помощью множества сторонних инструментов.

  • Файлы БД SQLite рекомендуются Библиотекой Конгресса США [29] для долгосрочного сохранения цифрового контента.

  • SQLite допускает любые кастомные расширения файлов, что тоже удобно.

Инструменты для работы с SQLite

Если файлы SQLite настолько удобны для хранения и редактирования информации, то возникает мысль: какие инструменты лучше всего подходят для работы с этими файлами?

Все знают про коммерческих бегемотов вроде MS Access [30], но интересно посмотреть на бесплатные опенсорсные программы такого рода.

SQLiteStudio

SQLiteStudio [31] — удобная программа для создания, редактирования и просмотра баз данных SQLite.

Удобный софт для работы с файлами SQLite - 3

Кроссплатформенная программа, работает под Linux, Windows и MacOS, с открытым исходным кодом [32]. Есть портативная версия, которая запускается без инсталляции.

Разработкой с 2007 года в одиночку занимается польский программист Павел Салава — в формате любительского пет-проекта.

SQLiteStudio 1.1.0 под Linux от 2008 года

SQLiteStudio 1.1.0 под Linux от 2008 года

Он говорит, что на момент создания это был первый в мире полноценный менеджер баз SQLite. В наше время появились и другие похожие программки, такие как DB Browser for SQLite [33] (DB4S).

DB Browser for SQLite

DB Browser for SQLite

Но по сравнению с ними у SQLiteStudio гораздо больше функций, он проще в использовании и производительнее в операциях вроде импорта БД. Говорят, что летает даже на старых ПК.

Основные функции:

  • Продвинутый редактор SQL с подсветкой синтаксиса SQL и подсказками, форматированием кода, подчёркиванием ошибок. Например, можно кликнуть мышкой с нажатым Ctrl по названию таблицы в запросе — и она откроется (или индекс, или триггер).

  • Зашифрованные защищённые паролем БД, поддерживаются SQLCipher [34], WxSQLite3 [35] и System.Data.SQLite [36]:

Удобный софт для работы с файлами SQLite - 6
  • SQL-запросы к нескольким БД.

  • Пользовательские SQL-функции, которые можно реализовать на JavaScript, Python или Tcl, есть репозиторий готовых скриптов [37].

  • Собственные последовательности сортировки (алгоритмы для сравнения значений).

  • История запросов.

  • Перетягивание мышкой таблиц и индексов между базами.

  • Автоматическое заполнение случайными значениями. Очень полезная функция: например, для презентации перед клиентом можно создать демонстрационную БД, заполнить её сгенерированными значениями и составить несколько SQL-запросов, чтобы показать, как будет работать реальная готовая система, которую вы намерены разработать.

  • Импорт из CSV или любого текстового файла, экспорт в SQL-запросы, CSV, HTML, XML, PDF, JSON.

  • Скрипты JavaScript, Python и Tcl в качестве генераторов для заполнения данных, пользовательских SQL-функций, последовательностей сортировки.

  • Плагины нескольких категорий: языки скриптов, форматы импорта/экспорта, форматы БД, подсветка кода, рендерер ячеек и др.

Тёмная тема

Тёмная тема

Изначально программа была реализована на Tcl/Tk [38], с третьей версии полностью переписана на C++/Qt [39].

Trilogy: альтернативный SQL

Trilogy [40] (бывший PreQL) — это SQL-подобный язык, который позиционируется как семантический или более высокоуровневый слой для SQL.

Его можно напрямую использовать в качестве замены джойнам и group_by. Есть проверка типов, поддержка importв стиле Python для повторного использования и иерархических запросов. Синтаксис Trilogy компилируется в различные диалекты SQL (по умолчанию DuckDB).

Семантическими моделями можно делиться, комбинировать и итеративно дорабатывать в интерактивных сессиях, сохраняя кастомные рабочие процессы.

Более высокий уровень абстракции помогает более надёжно использовать SQL для LLM. Для нейронок спроектирован дополнительный пакет Trilogy NLP [41] (pytrilogy-nlp).

Пока что Trilogy находится в стадии эксперимента, можно попробовать в онлайн-демо [42].

Например, вот фрагмент кода PRQL:

# model logic is written first

# with a pure semantic model
const greeting <- 'Hello'; # comments describe fields
key noun string; # people, places, things

# that you bind to data
datasource things (
  thing:noun
)
grain (noun)
query '''
select unnest(['world', 'friend', 'visitor']) as thing
''';

# with reusable functions
def initcap(word)-> upper(substring(word, 1, 1)) || substring(word,2, len(word));

# and run queries in familiar SQL syntax
WHERE noun like '%world%' or noun = 'friend'
SELECT
  greeting || ' ' || @initcap(noun) || '!' as salutation,
  rank salutation by len(salutation) asc as brevity_rank
;

Результат выполнения:

salutation

brevity_rank

Hello World!

1

Hello Friend!

2

Соответствующий код SQL, который генерируется в процессе:

WITH 
highfalutin as (
SELECT
    things."thing" as "noun"
FROM
    (
select unnest(['world', 'friend', 'visitor']) as thing
) as things
WHERE
     CASE WHEN things."thing" like '%world%' THEN True ELSE False END or things."thing" = 'friend'
),
wakeful as (
SELECT
    (((:greeting || ' ') || (UPPER(SUBSTRING(highfalutin."noun",1,1))  || SUBSTRING(highfalutin."noun",2,length(highfalutin."noun")))) || '!') as "salutation"
FROM
    highfalutin
WHERE
     CASE WHEN highfalutin."noun" like '%world%' THEN True ELSE False END or highfalutin."noun" = 'friend'
)
SELECT
    wakeful."salutation" as "salutation",
    rank() over (order by length(wakeful."salutation") asc ) as "brevity_rank"
FROM
    wakeful

SQLite-utils

SQLite-utils [43] — утилита командной строки и питоновская библиотека для работы с базами данных SQLite.

Она не позиционируется как многофункциональный инструмент, а предназначена для максимально быстрого выполнения двух простых функций:

  • создание БД из командной строки;

  • заполнение её значениями.

Библиотека спроектирована как полезное дополнение к Datasette [44]

Вот пример [45] по импорту базы в SQLite-utils, очистке данных и дальнейшему просмотру в Datasette:

SQLite Page Explorer

SQLite Page Explorer [46] — маленькое GUI-приложение со встроенным сервером redbean [47] для просмотра баз SQLite «постранично», как их видит сам движок:

SQLite Page Explorer

SQLite Page Explorer

SQLite, как большинство СУБД, хранит данные в страницах размером с блок на диске, это нааименьшая единица хранения данных в файловой системе, обычно 4 КБ. Минимальный размер страниц максимально ускоряет чтение и запись.

Обычно разработчики взаимодействуют с базой данных на уровне её схемы или структуры — то есть таблиц, строк и SQL. Но представление на уровне страницы даёт интересные инсайты:

  • Как индексы на самом деле выглядят на диске (это по сути отдельные маленькие таблицы).

  • Как более компактно хранить данные (и таким образом ускорить запросы и повысить производительность приложения).

  • Некоторые проблемы и неэффективности не заметны в схеме, а здесь их видно.

  • Представление о B-деревьях, одной из самых важных структур данных в вычислениях. Это основа большинства файловых систем и баз данных.

Благодаря магии redbean исполняемый файл sqlite-page-explorer.com размером 6,5 МБ запускается и работает нативно на Windows, Linux, MacOS и различных BSD, на любых архитектурах: ARM64 и x64:

Удобный софт для работы с файлами SQLite - 9

Из других менеджеров можно упомянуть DbVisualizer [48], DbGate [49] и DBeaver [50] — универсальный менеджер для всех популярных БД SQL, таких как MySQL, MariaDB, PostgreSQL, SQLite, Apache Family и др.

DBeaver

DBeaver

Конечно, работать с базой можно из консоли:

LiteCLI

LiteCLI

Но графический интерфейс помогает быстрее понять и визуально оценить структуру БД. Бывает, что он просто незаменим, например, для визуализации RTL-текста, если тот присутствует в некоторых колонках. Такой текст (арабский, иврит и проч.) плохо поддерживается в консольных редакторах.

Кроме того, в графическом интерфейсе даже начинающие пользователи могут отлично работать с СУБД, почти как с электронными таблицами типа Excel.

© 2025 ООО «МТ ФИНАНС»

Автор: ru_vds

Источник [51]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/sqlite/427597

Ссылки в тексте:

[1] SQLite: https://www.sqlite.org/

[2] быстрая: https://www.sqlite.org/fasterthanfs.html

[3] менее 1 МБ: https://www.sqlite.org/footprint.html

[4] автономная: https://www.sqlite.org/selfcontained.html

[5] неубиваемая: https://www.sqlite.org/hirely.html

[6] удобный способ хранения информации: https://www.sqlite.org/aff_short.html

[7] сжатию: https://www.sqlite.org/sqlar.html

[8] вдвое быстрее: https://github.com/chrisdavies/dbench

[9] самая популярная в мире СУБД: https://www.sqlite.org/mostdeployed.html

[10] «Безумные и забавные факты о SQLite»: https://habr.com/ru/companies/ruvds/articles/873816/

[11] официальный сайт: https://www.sqlite.org/index.html

[12] полнофункциональный: https://www.sqlite.org/fullsql.html

[13] Формат файлов SQLite: https://www.sqlite.org/fileformat2.html

[14] до 2050 года: https://www.sqlite.org/lts.html

[15] между системами: https://www.sqlite.org/appfileformat.html

[16] архивного формата для долгосрочного хранения: https://www.sqlite.org/locrsf.html

[17] Исходный код SQLite: https://sqlite.org/src

[18] три человека: https://www.sqlite.org/crew.html

[19] 3.50.1: https://www.sqlite.org/releaselog/3_50_1.html

[20] zlib: http://zlib.net/

[21] libpng: http://www.libpng.org/

[22] Libjpeg: https://github.com/winlibs/libjpeg

[23] серьёзная СУБД: https://antonz.org/sqlite-is-not-a-toy-database/

[24] хостинге: https://www.reg.ru/?rlink=reflink-717

[25] запрашивать с клиента только нужную информацию: https://phiresky.github.io/blog/2021/hosting-sqlite-databases-on-github-pages/

[26] полнотекстовый поиск: https://www.sqlite.org/fts3.html

[27] RTREE: https://www.sqlite.org/rtree.html

[28] автоматизированного стека undo/redo: https://www.sqlite.org/undoredo.html

[29] рекомендуются Библиотекой Конгресса США: https://www.loc.gov/preservation/resources/rfs/

[30] MS Access: https://www.microsoft.com/ru-RU/microsoft-365/access

[31] SQLiteStudio: https://sqlitestudio.pl/

[32] открытым исходным кодом: https://github.com/pawelsalawa/sqlitestudio/

[33] DB Browser for SQLite: https://sqlitebrowser.org/

[34] SQLCipher: https://www.zetetic.net/sqlcipher/

[35] WxSQLite3: https://github.com/utelle/wxsqlite3

[36] System.Data.SQLite: https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

[37] репозиторий готовых скриптов: https://github.com/pawelsalawa/sqlitestudio/wiki/Scripts_repository

[38] Tcl/Tk: https://www.tcl.tk/

[39] Qt: https://qt.io/

[40] Trilogy: https://trilogydata.dev/

[41] Trilogy NLP: https://trilogydata.dev/nlp/#reliable-sql-for-humans-and-machines

[42] онлайн-демо: https://trilogydata.dev/demo/

[43] SQLite-utils: https://sqlite-utils.datasette.io/en/stable/

[44] Datasette: https://datasette.io/

[45] пример: https://datasette.io/tutorials/clean-data

[46] SQLite Page Explorer: https://github.com/QuadrupleA/sqlite-page-explorer

[47] redbean: https://redbean.dev/

[48] DbVisualizer: https://www.dbvis.com/

[49] DbGate: https://dbgate.org/

[50] DBeaver: https://dbeaver.io/

[51] Источник: https://habr.com/ru/companies/ruvds/articles/924338/?utm_campaign=924338&utm_source=habrahabr&utm_medium=rss