У меня есть стол с столбцом 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) и хранить там сжатые данные. В любом случае, для этого?
Вы можете преобразовать String в байты, вызвав метод getBytes. Затем вы можете использовать java.util.Deflater, как описано в этом вопросе: библиотека Java для сжатия (например, LZW) строки. Deflater предоставит вам сжатый массив байтов, который вы должны установить в столбце varchar в mysql.
byte[]
и вы можете создать строку из этого - где ваша проблема?