longblob - mysql blob size
¿Cómo convierto de BLOB a TEXT en MySQL? (5)
Tengo un montón de registros donde el texto ha sido almacenado en un blob en MySQL. Para facilitar el manejo, me gustaría cambiar el formato de la base de datos a TEXTO ... ¿Alguna idea de la facilidad con la que realizar el cambio para no interrumpir los datos? ¿Supongo que tendrá que codificarse correctamente?
Después de buscar en Google para ti he encontrado this . Es una respuesta para una persona que quiere convertir un blob a char (1000) con UTF-8 :
CAST(a.ar_options AS CHAR(10000) CHARACTER SET utf8)
Esta es su respuesta. Probablemente hay mucho más que puedes leer sobre CAST aquí mismo . Espero que ayude a algunos.
He tenido el mismo problema, y aquí está mi solución:
- crear nuevas columnas de tipo texto en la tabla para cada columna de blob
- convierta todos los blobs en texto y guárdelos en las nuevas columnas
- eliminar las columnas de blob
- cambiar el nombre de las nuevas columnas a los nombres de los eliminados
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;
O puede usar esta función:
DELIMITER $$
CREATE FUNCTION BLOB2TXT (blobfield VARCHAR(255)) RETURNS longtext
DETERMINISTIC
NO SQL
BEGIN
RETURN CAST(blobfield AS CHAR(10000) CHARACTER SET utf8);
END
$$
DELIMITER ;
Puedes hacerlo muy fácilmente.
ALTER TABLE `table_name` CHANGE COLUMN `column_name` `column_name` LONGTEXT NULL DEFAULT NULL ;
La consulta anterior funcionó para mí. Espero que te ayude a ti también.
Eso es innecesario. Simplemente use SELECT CONVERT(column USING utf8) FROM
..... en lugar de simplemente SELECT column FROM
...