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

标签 c# mysql

我得到了一个 MySql 备份文件,其中包含如下列:

CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`profilepicture` blob,
)

此行配置文件图片的内容在备份文件中编码为某种转储,开始(在文本编辑器中)如下所示:

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

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

最佳答案

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

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

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

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

提供有关如何在 C# 应用程序中编写 SQL 的教程超出了 Stack Overflow 答案的范围。有大量可用资源。

关于c# - 如何从备份文件中解码 MySql blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48411765/

相关文章:

c# - Visual Studio Lightswitch Beta2

c# - 在目录中搜索以 ACCESS 开头的文件,然后搜索该文件

mysql - 学说2,从反面检索关联数据

php - 从 php 表行传递参数

php - Laravel - 自定义数据透视模型中的 belongsTo 关系不起作用

php - if-else 语句 strlen 不工作 php

c# - 调试器引擎。方法重写、局部变量提升和变量解析

c# - 更新面板内的单选按钮导致回发

c# - 鉴于此字符串(带有 '\n' ),我如何从所有返回中删除它?

php - 通过php显示数据库中的表