longblob Como faço para converter de BLOB para texto no MySQL?




view blob mysql (5)

Eu tenho um monte de registros onde o texto foi armazenado em um blob no MySQL. Para facilitar o manuseio, gostaria de alterar o formato no banco de dados para TEXT ... Alguma idéia de como fazer facilmente a alteração para não interromper os dados - eu acho que ela precisará ser codificada corretamente?


Ou você pode usar esta função:

DELIMITER $$

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


DELIMITER ;

Eu tive o mesmo problema e aqui está a minha solução:

  1. criar novas colunas do tipo texto na tabela para cada coluna de blob
  2. converter todos os blobs em texto e salvá-los nas novas colunas
  3. remova as colunas de blob
  4. renomeie as novas colunas para os nomes dos removidos
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;

Você pode fazer isso com muita facilidade.

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

A consulta acima funcionou para mim. Espero que ajude você também.


Aqui está um exemplo de uma pessoa que deseja converter um blob em char (1000) com UTF-8 :

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

Essa é a resposta dele. Provavelmente há muito mais sobre o CAST aqui . Espero que ajude alguns.


Se você estiver usando MYSQL-WORKBENCH , então você pode selecionar a coluna blob normalmente e clique com o botão direito na coluna e clique em valor aberto no editor . consulte captura de tela:





blobs