如何使用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;
本教程here显示了如何使用MySQL C API将图像插入MySQL数据库。
请看更新的问题解压缩会;不行 – sjohnson 2014-11-04 18:13:34