我有一个包含VARCHAR(10240)列的表。我有一个Java应用程序,它将一个字符串列表存储到该表列作为逗号分隔值。
但是现在我想压缩该String并将其存储在同一列中以符合存储要求和约束。 大多数类似问题的SO问题和答案建议将表列类型更改为BLOB或二进制安全类型。
压缩的结果大部分时间都是二进制数据,因此我们可能需要一个面向二进制的类型。但是我们可以使用Base64或其他东西对二进制数据进行编码并存储它。Refer this also.
String -> compress -> Binary data (byte[]) -> encode Base64 -> store in VARCHAR
我们可以通过以下方式解压缩,
VARCHAR -> decode base64 -> Binary data (byte[]) -> decompress -> String
Trick是我无法将该列更改为BLOB或其他任何内容,我需要将该列用作VARCHAR(10240)并将压缩数据存储在那里。反正有没有实现这个目标?
答案 0 :(得分:0)
您可以通过调用getBytes方法将String转换为字节。然后您可以使用 java.util.Deflater ,如此问题所述:A Java library to compress (e.g. LZW) a string。 Deflater将为您提供一个压缩的字节数组,您应该可以在mysql的varchar列中设置它。