SuperMiQi Ответов: 1

Как сохранить огромный текстовый файл в виде blob-поля в таблице sqlite ?


Всем Привет,

Надеюсь, вы все в безопасности.

Мне интересно, может быть, кто-то уже наткнулся на способ хранения огромного текстового файла в виде типа поля blob в таблице sqlite на языке c++ ?

Если у кого-то есть идея или намек, пожалуйста, дайте мне знать.
Заранее Вам большое спасибо.
Хорошего вам дня.

Что я уже пробовал:

В настоящее время я читаю весь текстовый файл и сохраняю его с помощью метода xxx_bind_xxx, но мне интересно, что произойдет, если мне придется иметь дело с огромным текстовым файлом ?

Я не нашел способа писать в буфер blob-объектов последовательно, но, может быть, есть другой способ ?

KarstenK

как писал Гарт, правильный способ-хранить файл где-то еще и хранить только имя файла с компонентами пути в базе данных.

1 Ответов

Рейтинг:
4

Garth J Lancaster

огромный ? текст ?? вы не предоставляете номера, поэтому полностью квалифицированный ответ может быть трудным

1) при условии соблюдения настоящего Ограничения Реализации Для SQLite[^] ie 'limits', вы можете быть в состоянии 'zip' сжать ваш файл, а затем вставить его в большой двоичный объект

- Я бы предложил вам написать две функции или методы, storeFileAsZip retrieveFileAsZip, которые обертывают необходимые функции и, возможно, возвращают вам поток в случае извлечения

2) Если ваши сжатые (заархивированные) файлы больше максимального размера "blob", вы можете использовать другое хранилище для файлов и сохранить путь / метод доступа в базе данных

Возможно, вы сможете получить дополнительную информацию/использовать Пространство Имен Poco::Data[^] чтобы помочь тебе.

Кстати ... если вы собираетесь хранить файл в большом двоичном объекте, я бы также включил "контрольную сумму" исходного файла, чтобы вы могли проверить целостность и т. д


SuperMiQi

Большое вам спасибо за Ваш вклад.
Удачного дня и оставайтесь в безопасности.