在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:
- 在表格中为每个blob列创build新的文本types的列
- 将所有斑点转换为文本并将它们保存在新列中
- 删除blob列
- 将新列重新命名为已删除列的名称
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 ;