Domanda

Ho un database mysql che contiene il contenuto come un BLOB, per qualunque ragione quegli sviluppatori abbiano scelto di usare un BLOB fuori dal mio controllo. È possibile convertire i dati in testo e il tipo di dati in testo?

È stato utile?

Soluzione

hai provato il comando alter table?

alter table mytable change mycolumn mycolumn text; 

da http://forums.mysql.com/ read.php? 103,164923,167648 # msg-167648 sembra che tu possa usare CAST.

potresti creare una nuova colonna (TEXT), quindi compilarla con un comando di aggiornamento:

update mytable set myNewColumn = CAST(myOldColumn AS CHAR(10000) CHARACTER SET utf8) 

Altri suggerimenti

La conversione del campo da BLOB in testo tronca tutti i caratteri > 127. Nel mio caso abbiamo molti personaggi europei, quindi questa non era un'opzione. Ecco cosa ho fatto:

  1. Crea campo temporaneo come testo
  2. Copia il campo BLOB nel campo temporaneo: AGGIORNA tbl SET col_temp = CONVERT (col USANDO latin1); In questo caso il mio blob conteneva caratteri con codifica latin1
  3. Converti il ??campo effettivo in tipo di dati di testo
  4. Copia temp nel campo effettivo
  5. Rimuovi colonna temporanea

Non esattamente semplice ma ha funzionato e nessuna perdita di dati. Sto usando la versione: '5.1.50-community'

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top