Mam wiele rekordów, w których tekst został zapisany w obszarze blob w MySQL. Dla ułatwienia obsługi chciałbym zmienić format w bazie danych na TEKST ... Wszelkie pomysły, jak łatwo dokonać zmiany, aby nie przerywać danych - myślę, że będzie to musiało być poprawnie zakodowane?Jak przekonwertować z obiektu BLOB na tekst w MySQL?
Odpowiedz
Po przejściu przez ciebie google, znalazłem this. Jest to odpowiedź na osobie, która chce przekształcić blob do char (1000) z kodowaniem UTF-8:
CAST(a.ar_options AS CHAR(10000) CHARACTER SET utf8)
to jego odpowiedź. Jest prawdopodobnie o wiele więcej informacji na temat CAST right here. Mam nadzieję, że to pomaga niektórym.
To niepotrzebne. Wystarczy użyć SELECT CONVERT(column USING utf8) FROM
..... zamiast tylko SELECT column FROM
...
ten nie działa dla mnie. – chaostheory
Użycie: 'SELECT CONVERT (kolumna UŻYJ utf8) OD tabeli;' – bmaupin
Działa to doskonale dla tych GROUP_CONCAT, które konwertują twoje dane wyjściowe na bloby i naprawdę chcesz je jako łańcuchy. Miałem problem podobny do OP podczas używania Node.JS z biblioteką node-mysql - to naprawiło wszystkie problemy group_concat. – marksyzm
Albo można użyć tej funkcji:
DELIMITER $$
CREATE FUNCTION BLOB2TXT (blobfield VARCHAR(255)) RETURNS longtext
DETERMINISTIC
NO SQL
BEGIN
RETURN CAST(blobfield AS CHAR(10000) CHARACTER SET utf8);
END
$$
DELIMITER ;
miałem ten sam problem, i tu jest moje rozwiązanie:
- tworzyć nowe kolumny typu tekst w tabeli dla każdej kolumny blob
- przekonwertować wszystkie plamy do tekstu i zapisywać je w nowych kolumnach
- usunąć th e blob kolumny
- zmiany nazwy nowych kolumn do nazw usuniętych te
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;
To jest jedyna odpowiedź, która zadziałała dla mnie, dzięki :) – Tom
można to zrobić bardzo łatwo.
ALTER TABLE `table_name` CHANGE COLUMN `column_name` `column_name` LONGTEXT NULL DEFAULT NULL ;
Powyższe zapytanie zostało wykonane dla mnie. Mam nadzieję, że ci to pomoże.
Niestety to nie działa dla mnie. Dostaję puste wiersze, a czasami tylko 1-znakowe wyjście z dziwnymi symbolami. – C4u
pracował w wybranych zapytania, jak również, wybrać A.id, odlewane (B.content jako CHAR (10000) utf8 CHARAKTERYSTYKA SET), jako zawartość Bb od A przyłączenia B NA B.content_id = A.content_id – dkb