back to top

MySQL: utilizzare BLOB per archiviare immagini ed altri tipi di file

In MySQL esiste un particolare tipo di dato che si presta ad sopitate grandi volumi di dati. Staimo parlando di BLOB (Binary Large data OBject). All’interno di un campo di tipo BLOB, ad esempio, è possibile archiviare oggetti come immagini, PDF o video.

La comodità di archiviare questo tipo di oggetti all’interno di un database può essere notevole tuttavia è bene considerare anche che l’utilizzo di campi BLOB porta ad un aumento esponenziale delle dimensioni del database (con possibili criticità, ad esempio, in caso di migrazione).

Utilizzare BLOB per archiviare immagini

Come detto un campo BLOB può essere utilizzato per archiviare immagini all’interno di un database MySQL.

Caricare immagini all’interno di un database

Per prima cosa, quindi, vediamo come caricare un’immagine all’interno di una ipotetica tabella "immagini":

INSERT INTO immagini (dati_immagine) VALUES (LOAD_FILE('/var/www/html/img/immagine.jpg'));

Come potete notare si tratta di una comune operazione di INSERT in cui il valore da inserire nel campo "dati_immagine" è restituito dal comando LOAD_FILE cui viene passato come argomento il percorso del file da importare.

Esportare un’immagine salvata in un database

Vedaimo ora come sia possibile esportare il contenuto di un campo di tipo BLOB e salvarlo sotto forma di immagne. Di seguito la query che consente di esportare questi dati e ricreare l’immagine originale:

SELECT dati_immagine FROM immagini WHERE id = 123 INTO DUMPFILE '/var/www/html/img/immagine.jpg';

Il valore utilizzato per la selezione del record mediante id – in questo caso "123" – è ovviamente arbitrario (potete utilizzare i criteri di selezione che preferite), quello che conta è l’introduzione del costrutto INTO DUMPFILE che permette di esportare il contenuto di un campo in un file di cui viene specificato il percorso fisico.

Campi BLOB e prestazioni

Naturalmente, maggiori saranno le dimensioni del file che si desidera archiviare, maggiori saranno i tempi di esecuzione necessari per il completamento dell’INSERT, lo stesso discorso, vale anche per quanto riguarda la grandezza dei dati da esportare tramite la SELECT.

Come detto all’inizio di questo articolo l’utilizzo di campi BLOB, nonostante l’indiscussa utilità, deve essere valutato attentamente in quanto può avere ricadute in termini di prestazioni e di "maneggevolezza" dei dati.

Altri contenuti interessanti

Pubblicità
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.

Leggi anche...

Come ottenere l’ID dell’ultimo record inserito in MySQL, PostgreSQL, SQL Server e Oracle?

Ottenere l'ID dell'ultimo record inserito in una tabella, dopo...

Database completo regioni, province e comuni italiani (in formato SQL)

Quando si sviluppa un sito web o un'applicazione in...

File CSV: cosa sono, come si aprono e come crearli

In questo articolo cercheremo di capire cos'è il formato...

Confrontare due tabelle e trovare i record senza corrispondenza

all'interno di un database relazionale può essere utile poter...

Eseguire comandi SQL online con SQL Fiddle

Sì. E' possibile testare codice SQL senza aver installato...

SQL: Calcolare la media dei valori di più campi

Attraverso una semplice query SQL è possibile calcolare dinamicamente...
Pubblicità