我有很多记录,其中文本被存储在MySQL中的blob中。为了方便处理,我想改变数据库的格式为文本…有什么想法可以轻松地进行更改,从而不中断数据-我猜它将需要正确编码?


当前回答

使用phpMyAdmin,您还可以设置选项来显示BLOB内容和显示完整的文本。

其他回答

或者你可以使用这个函数:

DELIMITER $$

CREATE FUNCTION BLOB2TXT (blobfield VARCHAR(255)) RETURNS longtext
DETERMINISTIC
NO SQL
BEGIN
       RETURN CAST(blobfield AS CHAR(10000) CHARACTER SET utf8);
END
$$


DELIMITER ;

我也遇到过同样的问题,下面是我的解决方案:

在表中为每个blob列创建文本类型的新列 将所有blob转换为文本并保存在新列中 删除blob列 将新列重命名为已删除列的名称

修改mytable 添加字段field1_new文本不为空, ADD COLUMN field2_new TEXT NOT NULL 更新mytable set field1_new = CONVERT(field1 USING utf8), field2_new = CONVERT(field2 USING utf8); 修改mytable 删除列field1, 删除列field2; 修改mytable 修改字段field1_new field1文本, 修改字段field2_new field2文本;

如果您使用的是MYSQL-WORKBENCH,那么您可以正常地选择blob列,然后右键单击列,然后在编辑器中单击打开值。请参考截图:

使用phpMyAdmin,您还可以设置选项来显示BLOB内容和显示完整的文本。

我的MariaDB记录也有同样的问题。 这是(我的同事)用

select
uncompress(blobfield)
from table