Esportare i risultati di una query Mysql per eccellere?

Il mio requisito è quello di memorizzare l’intero risultato della query

SELECT * FROM document WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429) 

in un file Excel.

Il modo tipico per ottenere ciò è esportare in CSV e quindi caricare il CSV in Excel.
È ansible utilizzare qualsiasi strumento da riga di comando MySQL per fare ciò includendo la clausola INTO OUTFILE SELECT :

 SELECT ... FROM ... WHERE ... INTO OUTFILE 'file.csv' FIELDS TERMINATED BY ',' 

Vedi questo link per le opzioni dettagliate.

In alternativa, è ansible utilizzare mysqldump per memorizzare il dump in un formato di valore separato usando l’opzione –tab, vedere questo link.

 mysqldump -u -p -h --where=jtaskResult=2429 --tab=  TaskResult 

Un buon esempio può essere quando non lo scrivi dopo la fine della tua query se hai dei join o dove ti trovi vicino:

  select 'idPago','fecha','lead','idAlumno','idTipoPago','idGpo' union all (select id_control_pagos, fecha, lead, id_alumno, id_concepto_pago, id_Gpo,id_Taller, id_docente, Pagoimporte, NoFactura, FacturaImporte, Mensualidad_No, FormaPago, Observaciones from control_pagos into outfile 'c:\\data.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'); 

Utilizza la query seguente:

  SELECT * FROM document INTO OUTFILE 'c:/order-1.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; 

Nel mio caso, ho bisogno di scaricare il risultato sql in un file sul lato client. Questa è la situazione più tipica. Non hai accesso al server o non vuoi scrivere il tuo risultato sul server. Il problema è che hai una query complicata che dura per diverse righe; non è ansible utilizzare la riga di comando per scaricare facilmente il risultato in un file.

 mysql -h hostname -d databasename -u username -ppwd -e "mysql simple sql statement that last for less than a line" > outputfile_on_the.client 

puoi mettere la tua query complicata in un file: longquery_file.sql per eseguire il comando

 mysql -h hn -d dn -u un -ppwd < longquery_file.sql > output.txt 

Questo ha funzionato per me. L’unica difficoltà con me è il carattere di tabulazione che a volte utilizzo per group_cancat (foo SEPARATOR 0x09) verrà scritto come ‘\ t’ nel file di output. Il carattere 0x09 è TAB ASCII. Ma questo problema non è particolare per il modo in cui si esegue il dump dei risultati sql su file. Potrebbe essere correlato al mio cercapersone. Fammi sapere quando trovi una risposta a questo problema. Aggiornerò questo post

Questa è una vecchia domanda, ma è ancora uno dei primi risultati su Google. Il modo più veloce per farlo è colbind MySQL direttamente ad Excel usando le query ODBC o MySQL per Excel. Quest’ultimo è stato menzionato in un commento all’OP, ma ho sentito che meritava davvero la sua risposta, perché esportare in CSV non è il modo più efficace per raggiungere questo objective.

Query ODBC – Questo è un po ‘più complicato da configurare, ma è molto più flessibile. Ad esempio, il componente aggiuntivo MySQL per Excel non consente di utilizzare le clausole WHERE nelle espressioni di query. La flessibilità di questo metodo consente inoltre di utilizzare i dati in modi più complessi.

MySQL per Excel : utilizzare questo componente aggiuntivo se non è necessario eseguire operazioni complesse con la query o se è necessario eseguire un’operazione in modo rapido e semplice. È ansible creare viste nel database per risolvere alcuni dei limiti della query.