如何从备份文件中解码MySql blob?

时间:2018-01-23 22:18:22

标签: c# mysql

我有一个包含如下列的MySql备份文件:

INSERT INTO `tbox_account_transaction` VALUES (8,'?\?\?0JFIF\0\0\0\0\0\0[...]');                  

此行profilepicture的内容在备份文件中编码为某种类型的转储,从(在文本编辑器中)开始,如下所示:

arr1 = ["Precon", "Contra", "Postco", "Cancel", "Consul"]

如何从c#中的.sql备份文件解码?它不是Base64,但我不知道它可能是什么。我不想将backup.sql文件还原到MySql,而是从备份文件中解码blob。

2 个答案:

答案 0 :(得分:1)

您看到的字节几乎肯定是JPEG图像的初始字节。从第五个字节开始的可读字符串“JFIF”是线索(参见https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format)。

许多其他二进制字节是null或不可打印的字符。所有奇怪的\?\0序列都是客户在文本显示中表示这些字节的最佳努力。

访问此数据的最简单方法是将转储文件还原到MySQL实例(甚至是在笔记本电脑上运行的本地实例),然后在C#代码中使用SQL来访问{{1}的二进制内容} blob。

将@Tommaso Belluzzo建议的数据从一个blob保存到profilepicture文件,或者只是直接显示,如果可以的话。我不是C#程序员,但似乎有一个.jpg类(参见https://msdn.microsoft.com/en-us/library/8tda2c3c(v=vs.85).aspx)。

提供有关如何在C#应用程序中编写SQL的教程,超出Stack Overflow答案的范围。有足够的资源可用于此。

答案 1 :(得分:0)

这看起来像jpg文件头。请尝试以下操作(blob是包含String的{​​{1}}类型变量:

profilepicture