Как преобразовать из BLOB в TEXT в MySQL?

У меня есть много записей, где текст хранился в блобе в MySQL. Для удобства обработки я хотел бы изменить формат базы данных в TEXT … Любые идеи, как легко внести изменения, чтобы не прерывать данные – я думаю, что он должен быть правильно закодирован?

Это не нужно. Просто используйте SELECT CONVERT(column USING utf8) FROM ….. вместо простого SELECT column FROM

После некоторых поисковых запросов я нашел это . Это ответ человеку, который хочет преобразовать blob в char (1000) с кодировкой UTF-8 :

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

Это его ответ. Вероятно, гораздо больше вы можете прочитать о CAST прямо здесь . Надеюсь, это поможет.

У меня была та же проблема, и вот мое решение:

  1. создавать новые столбцы типа текста в таблице для каждого столбца blob
  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 ; 

Этот запрос работал для меня. Надеюсь, это тоже поможет.

Или вы можете использовать эту функцию:

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