[sql] MySQL에서 BLOB를 TEXT로 어떻게 변환합니까?

텍스트가 MySQL의 Blob에 저장된 레코드가 많이 있습니다. 다루기 쉽도록 데이터베이스의 형식을 TEXT로 변경하고 싶습니다 … 데이터를 중단하지 않도록 변경하는 방법에 대한 아이디어가 있다면 제대로 인코딩해야한다고 생각하십니까?



답변

불필요합니다. 그냥 SELECT CONVERT(column USING utf8) FROM대신 …..를 사용하십시오 SELECT column FROM


답변

UTF-8 인코딩 으로 Blob을 char (1000)로 변환하려는 사람 의 예는 다음과 같습니다 .

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

이것이 그의 대답입니다. 당신은 CAST에 대해 읽을 수 많은 아마이 바로 여기 . 나는 그것이 도움이되기를 바랍니다.


답변

나는 같은 문제가 있었고 여기 내 해결책이 있습니다.

  1. 각 Blob 열에 대해 테이블에 텍스트 유형의 새 열을 만듭니다.
  2. 모든 얼룩을 텍스트로 변환하고 새 열에 저장하십시오.
  3. 얼룩 열 제거
  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 ;

위의 쿼리는 저에게 효과적이었습니다. 나는 그것이 당신에게도 도움이되기를 바랍니다.


답변

MYSQL-WORKBENCH를 사용하는 경우 블롭 열을 정상적으로 선택하고 열을 마우스 오른쪽 버튼으로 클릭 하고 편집기에서 값 열기를 클릭하십시오 . 스크린 샷 참조 :

스크린 샷


답변

또는이 기능을 사용할 수 있습니다 :

DELIMITER $$

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


DELIMITER ;


답변

phpMyAdmin 스크린 샷 phpMyAdmin을 사용하여 BLOB 컨텐츠를 표시하고 완전한 텍스트를 표시하도록 옵션을 설정할 수도 있습니다.