Сожмите и сохраните строку в поле VARCHAR в MySQL

0

У меня есть стол с столбцом VARCHAR (10240). У меня есть приложение Java, которое хранит список строк в столбце таблицы как значение, разделенное запятой.

Но теперь я хочу сжать эту строку и сохранить ее в том же столбце, чтобы соответствовать требованиям и ограничениям хранения. Большинство вопросов SO и ответов на подобные вопросы предлагают изменить тип столбца таблицы на BLOB или двоичный безопасный тип.

Результатом сжатия в большинстве случаев является двоичная информация, поэтому нам может понадобиться двоичный ориентированный тип. Но можем ли мы кодировать эти двоичные данные с Base64 или что-то еще и хранить его. См. Также.

String → compress → Binary data (byte[]) → encode Base64 → store in VARCHAR

И можем ли мы сделать что-то вроде ниже для распаковки,

VARCHAR → decode base64 → Binary data (byte[]) → decompress → String

Trick: я не могу изменить этот столбец в BLOB или что-то еще, мне нужно использовать столбец как VARCHAR (10240) и хранить там сжатые данные. В любом случае, для этого?

  • 0
    Результатом кодирования в Base64 является byte[] и вы можете создать строку из этого - где ваша проблема?
  • 0
    @laune это сжимает данные? Кодирование не гарантирует сжатие данных правильно? Я просто хочу знать хороший способ сжать эту строку и сохранить ее в поле varchar
Показать ещё 4 комментария
Теги:
compression

1 ответ

0

Вы можете преобразовать String в байты, вызвав метод getBytes. Затем вы можете использовать java.util.Deflater, как описано в этом вопросе: библиотека Java для сжатия (например, LZW) строки. Deflater предоставит вам сжатый массив байтов, который вы должны установить в столбце varchar в mysql.

  • 0
    Могу ли я просто отправить byte [] на запрос вставки в БД?
  • 0
    Зависит от того, какую библиотеку вы используете. Если вы используете библиотеку mysql jdbc напрямую, вы сможете это сделать. Смотрите пример в ответе на этот вопрос: stackoverflow.com/questions/1324641/…
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню