[Я пиарюсь] sqlite-gui: еще один редактор SQLite для Windows
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Всё начиналось как простое средство для выполнения запросов к SQLite базе с сохраняемой историей запросов и кода в редакторе, написанное по старинке на WinAPI. Потихоньку оно обросло функционалом, и, если бы я с самого начала знал во что это выльется, то не взялся бы.
Что есть
Подсветка синтаксиса и автодополнение
SPL
Реализовано достаточно наивно, без участия лексического парсера, но в большинстве случаев работает как надо. Для редактора запросов используется Richedit-компонент (msftedit.dll), который в Windows 10 имеет некоторые проблемы. По этой причине в дистрибутив включена версия от Windows 7. Отмечу, что для больших запросов подсветка в DB4S работает значительно быстрее за счет работы только с видимой частью запроса.
Раскраска ячеек результата по их типам, как в SQLiteSpy
SPL
Одновременное редактирование нескольких таблиц
SPL
История успешно завершенных и пользовательских запросов
SPL
Экспорт и импорт данных
SPL
Помимо стандартных экспорта и импорта в .csv и .sql есть возможность переноса данных из/в внешних источников через ODBC, таких как Access, Excel или Postgres, при наличии установленных в системе 32-битных драйверов. Реализовано при помощи odbc-расширения. Поддерживаются только базовые типы.
Диаграмма базы данных с поиском
SPL
Сравнение текущей базы с другой по структуре и по данным
SPL
Поиск по всей базе
SPL
Если заранее не известно, где может быть искомое, то можно воспользоваться поиском по всей базе. Поскольку поиск выполняется обычным col1 like .. or col2 like ... по всем столбцам, то для больших баз поиск будет медленным. Подсмотрен в Heidi.
Быстрый просмотр связанных данных
SPL
Получив в результатах запроса некоторый id, иногда приходится выполнять дополнительный запрос, чтобы узнать что скрывается за этим id. sqlite-gui позволяет избежать этого: достаточно кликнуть по id с зажатым Alt. Связь с таблицей источником формируется по внешним ключам базы, а в случае, если эти ключи не используются, может быть добавлена отдельно в таблице refs базы настроек prefs.sqlite.
Режим консоли
SPL
Иногда, анализируя данные, требуется найти одно значение, потом сделать по нему выборку, потом из полученных значений выбрать одно и выполнить запрос с ним, т.е. желательно иметь результаты предыдущих запросов на экране. Именно для этого и сделан терминал, имитирующий консоль, но с полноценным редактором ввода.
Графики
SPL
Параметризованные запросы
SPL
В запросе из кода реального приложения, то могут быть плейсхолдеры, напр. select * from orders where id = ?1. Если запрос большой, то их можно пропустить и выполнить запрос в менеджере как есть, в результате чего некоторые менеджеры считают что передан NULL (SQLite считает такой запрос валидным) и возвращают пустой ответ.
Генерация данных для таблиц
SPL
Генерируемое значение может быть: последовательностью (напр. для id), числом или датой из интервала, ссылкой на значение из другой таблицы или одним из заранее подготовленного списка, хранящегося в таблице generators базы настроек prefs.sqlite.
Включение и отключение триггеров и индексов
SPL
Иногда для ускорения импорта данных требуется отключить триггеры и индексы на таблице. Отмечу, что SQLite позволяет отключить/включить все триггеры в базе, вызовом sqlite3_db_config(db, SQLITE_DBCONFIG_ENABLE_TRIGGER, 0/1), но вот для индексов такого нет. sqlite-gui при отключении индекса или триггера производит его удаление из базы с сохранением DDL в таблице deleted базы настроек prefs.sqlite. Индексы, определенные в DDL таблицы отключить нельзя.
Набор расширений
SPL
В дистрибутив включено несколько расширений: часть из них стандартные, как напр. series и uuid, часть самописных, напр. XML и ora, и одно стороннее icu. Описание всех расширений и их функций есть в Wiki.
Поддержка зашифрованных баз данных
SPL
Работает через vfs-расширение SQLite3 Multiple Ciphers. Поддерживаются практически все распространенные способы шифрования SQLite. Минус только в том, что SQLite требуется собирать уже из исходников этого проекта, а не с сайта SQLite. Если доступ к зашифрованным базам не требуется, то можно использовать дистрибутив sqlite-gui-x.y.z-no-ciphers.zip.
Поддержка триггеров instead-of, позволяющая редактировать данные представления
SPL
Если представление имеет триггеры intead-of update/insert/delete, то данные такого представления можно редактировать как обычную таблицу. Было сделано по просьбе одного из пользователей.
Параллельное выполнение запросов
SPL
Некоторые менеджеры SQLite используют только одно подключение к базе и поэтому, при выполнении долгого запроса, остальные дожидаются его выполнения. Это особенно неприятно, поскольку может вызывать зависание интерфейса, который для своей работы также формирует запросы. sqlite-gui для каждой вкладки редактора использует отдельное подключение и одно для работы интерфейса, что позволяет отчасти избежать такой проблемы. Минус этой схемы в том, что каждое соединение использует свою TEMP-схему для временных таблицы, которая недоступна другим. Поэтому вместо TEMP предлагается использовать автоподключаемую in-memory базу SHARED.
Другое
SPL
Описание всяких мелочей, таких как открыть базу только на чтение или в памяти, доступно в главном меню программы ? > Tips.
Чего нет
Редактирование структуры таблицы
SPL
В SQLite нет возможности изменить порядок столбцов или тип столбца. Для имитации этого другие менеджеры парсят DDL таблицы и на этой основе создают новую таблицу, в которую переливают данные из исходной. Помимо особенностей парсинга DDL, также следует учитывать наличия триггеров и индексов на таблице и её вхождение в представления. Сделать надежно достаточно сложно, потому и нет.
Просмотр BLOB-полей как Hex или изображения
SPL
Возможно в будущем.
Автоматическое форматирование запросов
SPL
С одной стороны это востребованная функция для тех кто работает с большими запросами, а с другой — большие запросы на SQLite редкость. Возможно будет добавлено в будущем.
Построитель запросов
SPL
Написать построитель просто. Гораздо сложнее написать разбор имеющегося запроса в диаграмму построителя. В виду этого и сомнительной полезности данной возможности, построителя нет.
Пользовательские сопоставления (collation)
SPL
Очень редко надо.
Пользовательские функции
SPL
В SQLiteStudio можно писать свои функции на SQL/QtScript/Tcl. Проблема таже, что и с пользовательскими скриптами (см. ниже), и поэтому функции предлагается добавлять через расширения.
Поддержка скриптов
SPL
В SQLiteManager есть возможность писать скрипты для загрузки данных на Lua. Однако пользователи скорее предпочтут стандартный Python. Не избежал этой ошибки и я, предлагая в ранних версиях свой визуальный редактор для ETL.
Печать
SPL
Непонятно для чего может быть надо.
Редактор форм, как в Valentina Studio
SPL
Как и в случае с печатью, не очень понятно зачем это может быть надо.
Мультиязычный интерфейс
SPL
Считаю излишним.
Поддержка Linux, iOS и других
SPL
Для этого потребовалось бы использовать фреймворк для кроссплатформенной разработки. Скорее всего это был бы QT, который используют большинство менеджеров (еще встречается Java).
Выбор темы оформления
SPL
У стандартных компонент WinAPI, используемых в sqlite-gui, нет возможности изменения темы, кроме самостоятельной отрисовки, что требует дополнительного кодинга.
Восстановление базы и удаленных строк
SPL
Формат SQLite иногда позволяет исправить поврежденную базу (SQLite CLI, команда .restore) или восстановить удаленные строки (напр. undark). Поскольку для этого нет API и требуется изучение самого формата, то этого нет.
Редактор прагм
SPL
Несмотря на то, что DB4S имеет отдельную вкладку для этого, обычно считается, что пользователям не требуется иметь подобный инструмент.
Недостатки
По умолчанию результат запроса имеет ограничение в 10000 строк
SPL
Стандартный компонент ListView, используемый для отображения табличных данных, не рассчитан на большое количество строк. Для обхода этого требуется использовать виртуальный режим, что достаточно муторно. Как и другой способ, используемый в DB4S, — подгружать только видимую часть данных.
Невозможно из редактора задать значение в виде пустой строки (только NULL)
SPL
С моей точки зрения, пустая строка используется редко, и потому, чтобы избежать загромождения интерфейса, в нем нет возможности для текстового поля задать что именно подразумевалось под пустым пользовательским вводом — NULL или пустая строка.
Только 32-битная версия
SPL
Изначально проект использовал Code::Blocks 17 с mingw32 5.1 (имеет небольшой размер). Потом из-за проблемы с VirusTotal компилятор был обновлен до 9-ой версии. И уже после был обнаружен mingw64, который позволяет собирать 32 и 64-битные версии. С другой стороны 64-битная версия, для которой требуются правки, не будет иметь каких то значимых преимуществ, кроме, пожалуй, более свежих ODBC драйверов.
Страница проекта — github.com/little-brother/sqlite-gui
Скачать последнюю версию — github.com/little-brother/sqlite-gui/releases/latest
===========
Источник:
habr.com
===========
Похожие новости:
- [Администрирование баз данных] Ключевые аспекты при выборе базы данных для вашего приложения
- [Open source, PostgreSQL, NoSQL, Администрирование баз данных] А нужен ли Redis или хватит PostgreSQL (перевод)
- [PostgreSQL, SQL, Администрирование баз данных, Визуализация данных] Анализируем «слона» вместе с коллегами
- [Я пиарюсь, Графический дизайн, Управление проектами, Развитие стартапа, Брендинг] Из Беларуси с любовью: как мы открывали первый бар. Часть 2
- [Google App Engine, Angular] Коротко и ясно: размещаем фронт Angular 11, бэк Spring Boot Java 11 и mySQL DB на Google App Engine
- [Я пиарюсь, Производство и разработка электроники, Гаджеты, Медгаджеты, Здоровье] Смыватель для инсталляций. Продолжение истории
- Выпуск rqlite 6.0, распределённой отказоустойчивой СУБД на основе SQLite
- [.NET, SQL, Microsoft SQL Server, C#] Linked Server MSSQL. Оптимизация производительности в 30 раз
- [Разработка веб-сайтов, Я пиарюсь, IT-инфраструктура, Управление проектами, Управление персоналом] Как удвоить эффективность сотрудника при помощи цифровизации
- [Настройка Linux, PostgreSQL, Администрирование баз данных] Измеряем расходы на память у Postgres процессов (перевод)
Теги для поиска: #_ja_piarjus (Я пиарюсь), #_sql, #_sqlite, #_ja_piarjus (
Я пиарюсь
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 15:00
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Всё начиналось как простое средство для выполнения запросов к SQLite базе с сохраняемой историей запросов и кода в редакторе, написанное по старинке на WinAPI. Потихоньку оно обросло функционалом, и, если бы я с самого начала знал во что это выльется, то не взялся бы. Что есть Подсветка синтаксиса и автодополнениеSPLРеализовано достаточно наивно, без участия лексического парсера, но в большинстве случаев работает как надо. Для редактора запросов используется Richedit-компонент (msftedit.dll), который в Windows 10 имеет некоторые проблемы. По этой причине в дистрибутив включена версия от Windows 7. Отмечу, что для больших запросов подсветка в DB4S работает значительно быстрее за счет работы только с видимой частью запроса.
Раскраска ячеек результата по их типам, как в SQLiteSpySPLОдновременное редактирование нескольких таблицSPLИстория успешно завершенных и пользовательских запросовSPLЭкспорт и импорт данныхSPLПомимо стандартных экспорта и импорта в .csv и .sql есть возможность переноса данных из/в внешних источников через ODBC, таких как Access, Excel или Postgres, при наличии установленных в системе 32-битных драйверов. Реализовано при помощи odbc-расширения. Поддерживаются только базовые типы.
Диаграмма базы данных с поискомSPLСравнение текущей базы с другой по структуре и по даннымSPLПоиск по всей базеSPLЕсли заранее не известно, где может быть искомое, то можно воспользоваться поиском по всей базе. Поскольку поиск выполняется обычным col1 like .. or col2 like ... по всем столбцам, то для больших баз поиск будет медленным. Подсмотрен в Heidi.
Быстрый просмотр связанных данныхSPLПолучив в результатах запроса некоторый id, иногда приходится выполнять дополнительный запрос, чтобы узнать что скрывается за этим id. sqlite-gui позволяет избежать этого: достаточно кликнуть по id с зажатым Alt. Связь с таблицей источником формируется по внешним ключам базы, а в случае, если эти ключи не используются, может быть добавлена отдельно в таблице refs базы настроек prefs.sqlite.
Режим консолиSPLИногда, анализируя данные, требуется найти одно значение, потом сделать по нему выборку, потом из полученных значений выбрать одно и выполнить запрос с ним, т.е. желательно иметь результаты предыдущих запросов на экране. Именно для этого и сделан терминал, имитирующий консоль, но с полноценным редактором ввода.
ГрафикиSPLПараметризованные запросыSPLВ запросе из кода реального приложения, то могут быть плейсхолдеры, напр. select * from orders where id = ?1. Если запрос большой, то их можно пропустить и выполнить запрос в менеджере как есть, в результате чего некоторые менеджеры считают что передан NULL (SQLite считает такой запрос валидным) и возвращают пустой ответ.
Генерация данных для таблицSPLГенерируемое значение может быть: последовательностью (напр. для id), числом или датой из интервала, ссылкой на значение из другой таблицы или одним из заранее подготовленного списка, хранящегося в таблице generators базы настроек prefs.sqlite.
Включение и отключение триггеров и индексовSPLИногда для ускорения импорта данных требуется отключить триггеры и индексы на таблице. Отмечу, что SQLite позволяет отключить/включить все триггеры в базе, вызовом sqlite3_db_config(db, SQLITE_DBCONFIG_ENABLE_TRIGGER, 0/1), но вот для индексов такого нет. sqlite-gui при отключении индекса или триггера производит его удаление из базы с сохранением DDL в таблице deleted базы настроек prefs.sqlite. Индексы, определенные в DDL таблицы отключить нельзя.
Набор расширенийSPLВ дистрибутив включено несколько расширений: часть из них стандартные, как напр. series и uuid, часть самописных, напр. XML и ora, и одно стороннее icu. Описание всех расширений и их функций есть в Wiki.
Поддержка зашифрованных баз данныхSPLРаботает через vfs-расширение SQLite3 Multiple Ciphers. Поддерживаются практически все распространенные способы шифрования SQLite. Минус только в том, что SQLite требуется собирать уже из исходников этого проекта, а не с сайта SQLite. Если доступ к зашифрованным базам не требуется, то можно использовать дистрибутив sqlite-gui-x.y.z-no-ciphers.zip.
Поддержка триггеров instead-of, позволяющая редактировать данные представленияSPLЕсли представление имеет триггеры intead-of update/insert/delete, то данные такого представления можно редактировать как обычную таблицу. Было сделано по просьбе одного из пользователей.
Параллельное выполнение запросовSPLНекоторые менеджеры SQLite используют только одно подключение к базе и поэтому, при выполнении долгого запроса, остальные дожидаются его выполнения. Это особенно неприятно, поскольку может вызывать зависание интерфейса, который для своей работы также формирует запросы. sqlite-gui для каждой вкладки редактора использует отдельное подключение и одно для работы интерфейса, что позволяет отчасти избежать такой проблемы. Минус этой схемы в том, что каждое соединение использует свою TEMP-схему для временных таблицы, которая недоступна другим. Поэтому вместо TEMP предлагается использовать автоподключаемую in-memory базу SHARED.
ДругоеSPLОписание всяких мелочей, таких как открыть базу только на чтение или в памяти, доступно в главном меню программы ? > Tips.
Чего нет Редактирование структуры таблицыSPLВ SQLite нет возможности изменить порядок столбцов или тип столбца. Для имитации этого другие менеджеры парсят DDL таблицы и на этой основе создают новую таблицу, в которую переливают данные из исходной. Помимо особенностей парсинга DDL, также следует учитывать наличия триггеров и индексов на таблице и её вхождение в представления. Сделать надежно достаточно сложно, потому и нет.
Просмотр BLOB-полей как Hex или изображенияSPLВозможно в будущем.
Автоматическое форматирование запросовSPLС одной стороны это востребованная функция для тех кто работает с большими запросами, а с другой — большие запросы на SQLite редкость. Возможно будет добавлено в будущем.
Построитель запросовSPLНаписать построитель просто. Гораздо сложнее написать разбор имеющегося запроса в диаграмму построителя. В виду этого и сомнительной полезности данной возможности, построителя нет.
Пользовательские сопоставления (collation)SPLОчень редко надо.
Пользовательские функцииSPLВ SQLiteStudio можно писать свои функции на SQL/QtScript/Tcl. Проблема таже, что и с пользовательскими скриптами (см. ниже), и поэтому функции предлагается добавлять через расширения.
Поддержка скриптовSPLВ SQLiteManager есть возможность писать скрипты для загрузки данных на Lua. Однако пользователи скорее предпочтут стандартный Python. Не избежал этой ошибки и я, предлагая в ранних версиях свой визуальный редактор для ETL.
ПечатьSPLНепонятно для чего может быть надо.
Редактор форм, как в Valentina StudioSPLКак и в случае с печатью, не очень понятно зачем это может быть надо.
Мультиязычный интерфейсSPLСчитаю излишним.
Поддержка Linux, iOS и другихSPLДля этого потребовалось бы использовать фреймворк для кроссплатформенной разработки. Скорее всего это был бы QT, который используют большинство менеджеров (еще встречается Java).
Выбор темы оформленияSPLУ стандартных компонент WinAPI, используемых в sqlite-gui, нет возможности изменения темы, кроме самостоятельной отрисовки, что требует дополнительного кодинга.
Восстановление базы и удаленных строкSPLФормат SQLite иногда позволяет исправить поврежденную базу (SQLite CLI, команда .restore) или восстановить удаленные строки (напр. undark). Поскольку для этого нет API и требуется изучение самого формата, то этого нет.
Редактор прагмSPLНесмотря на то, что DB4S имеет отдельную вкладку для этого, обычно считается, что пользователям не требуется иметь подобный инструмент.
Недостатки По умолчанию результат запроса имеет ограничение в 10000 строкSPLСтандартный компонент ListView, используемый для отображения табличных данных, не рассчитан на большое количество строк. Для обхода этого требуется использовать виртуальный режим, что достаточно муторно. Как и другой способ, используемый в DB4S, — подгружать только видимую часть данных.
Невозможно из редактора задать значение в виде пустой строки (только NULL)SPLС моей точки зрения, пустая строка используется редко, и потому, чтобы избежать загромождения интерфейса, в нем нет возможности для текстового поля задать что именно подразумевалось под пустым пользовательским вводом — NULL или пустая строка.
Только 32-битная версияSPLИзначально проект использовал Code::Blocks 17 с mingw32 5.1 (имеет небольшой размер). Потом из-за проблемы с VirusTotal компилятор был обновлен до 9-ой версии. И уже после был обнаружен mingw64, который позволяет собирать 32 и 64-битные версии. С другой стороны 64-битная версия, для которой требуются правки, не будет иметь каких то значимых преимуществ, кроме, пожалуй, более свежих ODBC драйверов.
Страница проекта — github.com/little-brother/sqlite-gui Скачать последнюю версию — github.com/little-brother/sqlite-gui/releases/latest =========== Источник: habr.com =========== Похожие новости:
Я пиарюсь ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 15:00
Часовой пояс: UTC + 5