在MySQL中如何从BLOB转换为TEXT?

我有很多的logging文本已被存储在一个blob在MySQL中。 为了便于处理,我想将数据库中的格式更改为TEXT …任何想法如何轻松地进行更改以避免中断数据 – 我想这需要编码正确吗?

这是不必要的。 只需使用SELECT CONVERT(column USING utf8) FROM …..而不是只是SELECT column FROM

一些谷歌search后,我发现这一点 。 这是一个人想要用UTF-8编码将string转换为字符(1000)的答案:

 CAST(a.ar_options AS CHAR(10000) CHARACTER SET utf8) 

这是他的答案。 这里可能还有更多关于CAST的信息 。 我希望它有助于一些。

我有同样的问题,这里是我的解决scheme:

  1. 在表格中为每个blob列创build新的文本types的列
  2. 将所有斑点转换为文本并将它们保存在新列中
  3. 删除blob列
  4. 将新列重新命名为已删除列的名称
 ALTER TABLE mytable ADD COLUMN field1_new TEXT NOT NULL, ADD COLUMN field2_new TEXT NOT NULL; update mytable set field1_new = CONVERT(field1 USING utf8), field2_new = CONVERT(field2 USING utf8); alter table mytable drop column field1, drop column field2; alter table mytable change column field1_new field1 text, change column field2_new field2 text; 

你可以很容易地做到这一点。

 ALTER TABLE `table_name` CHANGE COLUMN `column_name` `column_name` LONGTEXT NULL DEFAULT NULL ; 

上面的查询为我工作。 我希望它也能帮助你。

或者你可以使用这个function:

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