如何使用zlib.h在mYSQL_RES中解压缩压缩BLOB而不使用UNCOMPRESS在mysql查询中

问题描述:

我使用insert compress {hex data}将数据存储到innodb表BLOB列中。我需要以编程方式使用mysql c api选择压缩数据,并在应用程序级别对其进行解压缩。我可以这样做吗,使用zlib.h和解压缩函数或膨胀/放气方法?如何使用zlib.h在mYSQL_RES中解压缩压缩BLOB而不使用UNCOMPRESS在mysql查询中

我不能在mysql查询中使用解压缩,因为它是一个大的结果集,并且数据通过网络传播到不同的服务器上。

例如:

MYSQL_RES *results = NULL; 
MYSQL_ROW row; 

results = exec_query(); 
while (row = mysql_fetch_row(results)) 
{ 
     // row[0] = uncompressed size 
     // row[1] = compressed size 
     // row[2] = compressed blob 

     // does MYSQL "INSERT COMPRESS({data}) INTO ... " use LZ77? 
     // will this work? 
     // uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen) 
} 

我不知道你是做正确,我无法理解你想要什么。

基本上BLOB用于存储如图片,视频等

二进制数据,所以你存储它们逐字节和检索相同。

此外,你想压缩。

因此,压缩字节并存储。在检索时解压缩它。

A样本例如:

select uncompress(compress('hello world')) as sample; 

enter image description here

本教程here显示了如何使用MySQL C API将图像插入MySQL数据库。

+0

请看更新的问题解压缩会;不行 – sjohnson 2014-11-04 18:13:34