Esatto, ad esempio puoi estrarre i risultati di una tabella e salvarli in un file csv, o anche in un altro formato volendo.
Nello specifico dunque, vediamo un esempio di come creare file csv da mysql, tramite uno script sql che salva il risultato di una query in un file fisico presente una specifica cartella del server.
Ecco come fare.
Come creare un file csv da mysql
Per poter generare e salvare un file di tipo csv da mysql, basta utilizzare la seguente sintassi:
SELECT campi INTO OUTFILE 'C:/cartella/nome-file.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM nome-tabella
Questa query infatti, si occupa di pescare i dati da una determinata tabella mysql, e di salvarli dentro un percorso specifico.
Da notare che volendo si può anche specificare tramite sql il delimitatore da usare (in questo esempio la virgola), il carattere per chiudere i risultati (in questo caso le virgolette), ed il delimitatore di riga (\n).
Attenzione però, tutto questo potrebbe non funzionare, e potreste ricevere l'errore:
"The MySQL server is running with the --secure-file-priv option so it cannot execute this statement".
In questo caso per risolvere potete agire in due modi: o salvate il file dentro il percorso indicato nella variabile secure_file_priv del my.ini, oppure la disattivate (sempre da my.ini, il file di configurazione di mysql) e poi riavviate.
Un'ultima considerazione va fatta su un altro possibile errore, il "File nome-file already exists".
Questo errore significa semplicemente che il file che state provando a salvare con la funzione OUTFILE MYSQL esiste già.
Purtroppo questo limite non sembra essere superabile, se non agendo d'astuzia.
In mysql infatti non si possono sovrascrivere i file già esistenti (ma come pro c'è il fatto che è possibile creare nuovi file senza bisogno che questi esistano già), quindi l'unica soluzione è, o creare uno script che prima cancella il file e poi lo ricrea, oppure salvare il file con nomi diversi, magari mettendoci data ed ora nel nome.
Lascia un commento!