将字符串压缩并存储在mysql

时间:2018-02-17 04:29:42

标签: java mysql compression

我有一个包含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)并将压缩数据存储在那里。反正有没有实现这个目标?

1 个答案:

答案 0 :(得分:0)

您可以通过调用getBytes方法将String转换为字节。然后您可以使用 java.util.Deflater ,如此问题所述:A Java library to compress (e.g. LZW) a string。 Deflater将为您提供一个压缩的字节数组,您应该可以在mysql的varchar列中设置它。