Esportare query mysql in formato csv

Capita a volte di dover esportare i dati di una query in un file csv ( comma separated values) allo scopo di reimportarli in un foglio elettronico (excel e simili).

Vediamo un metodo per farlo.

Supponiamo che dobbiate eseguire una query di questo tipo:
select campo1,campo2,...,campoN from TABELLA1 inner join TABELLA2 on TABELLA1.campoM=TABELLA2.campoR where campo1='value1' and TABELLA2.campo2='value2' order by campo3,campo4,campo5;

E' sufficiente modificare la query aggiungendo la stringa [OPTIONS] nella posizione indicata:

select campo1,campo2,...,campoN [OPTIONS] from TABELLA1 inner join TABELLA2 on TABELLA1.campoM=TABELLA2.campoR where campo1='value1' and TABELLA2.campo2='value2' order by campo3,campo4,campo5;

dove [OPTIONS] ha questa forma:

INTO outfile '[nome_file.csv]' FIELDS TERMINATED BY '[separatore]' ENCLOSED BY ''

Alla stringa [nome_file.csv] va sostituito il percorso assoluto del file che si intende creare, ad esempio:
/home/utente/dump_table.csv
Come [separatore] va indicato il separatore di campo scelto. 
Fate molta attenzione scegliendo questo campo, in quanto se il separatore scelto è un carattere
presente nei campi della table ciò scompaginerà completamente il risultato.
Una soluzione applicabile è indicare non un solo carattere ma una stringa di 3 caratteri che presumibilmente non corrisponde a nessun valore dei campi della
select, ad esempio:


 ###, @@@, #@#, #£@



Nel nostro esempio scegliamo la stringa ### e vediamo come appare la nostra query, eseguita dall'utente dumpolo che ha home sotto /home/dumpolo.
Come nome del file csv scegliamo dump_table.csv:

select campo1,campo2,...,campoN INTO outfile '/home/dumpolo/dump_table.csv' FIELDS TERMINATED BY '###' ENCLOSED BY '' from TABELLA1 inner join TABELLA2 on TABELLA1.campoM=TABELLA2.campoR where campo1='value1' and TABELLA2.campo2='value2' order by campo3,campo4,campo5;


Una volta eseguita la query il file dump_table.csv è a nostra disposizione per importarlo sotto Excel o simili. 
Ad esempio, se si utilizza Linux, si può aprire con Libre Office Calc: in base al suffisso .csv l'applicazione ci propone direttamente l'opzione Text Import dove tra le Separator Options dobbiamo scegliere Separated by,  spuntare l'opzione Other e indicare la stringa del separatore (### nel nostro caso). 
A questo punto si apre il foglio di calcolo che possiamo salvare nel formato che più ci aggrada (.ods, .xls, etc.)

0 commenti:

Posta un commento