Domanda

SQL ha la possibilità di scaricare i dati in un file, utilizzando l'opzione INTO OUTFILE, per exmaple

SELECT * from FIshReport INTO OUTFILE './FishyFile'

Il problema è che questo comando è consentito solo se il file non esisteva prima di esso. Si crea il file e quindi inserisce i dati. Quindi, c'è un modo per aggiungere dati in un file in questo modo?

È stato utile?

Soluzione

come pagina MySQL su sintassi SELEZIONA suggerisce:

http://dev.mysql.com/doc/refman/ 5.0 / it / select.html

L'alternativa a questo è quello di rilasciare SELECT dal client di MySQL:

However, if the MySQL client software is installed on the remote machine,
you can instead use a client command such as mysql -e "SELECT ..." > file_name 
to generate the file on the client host. 

, che, nel suo caso, sarebbe stato modificato per essere:

mysql -e "SELECT * from FishReport" >> file_name

in modo che semplicemente accodamento al file.

Dal vostro script Tcl, si potrebbe semplicemente emettere questo come un comando exec:

http://www.tcl.tk/man/tcl/tutorial/ Tcl26.html

Altri suggerimenti

Credo che MySQL non consente aggiungendo dati in un file esistente o sovrascrivere un file esistente per ragioni di sicurezza. Un giro per lavoro potrebbe essere per salvare resuts in file separati e quindi aggiungere il file utilizzando IO.

Si può sempre aggiungere l'output dallo script SQL in un file utilizzando >>

Per esempio (per Sybase):

isql < script.sql >> outputfile.out

non posso dire che cosa l'equivalente è per MySQL, ma il principio dovrebbe essere lo stesso.

di uscita Naturalmente andranno tutti in un unico file, quindi se il vostro script SQL è l'output di varie seleziona SQL al file di output diversi, allora si avrebbe bisogno di suddividere lo script in su.

Si potrebbe semplicemente aggiungerlo a una variabile. Quindi utilizzare un SELECT con UNION.

declare t varchar(100);

set @myvar = concat('
    select *  INTO OUTFILE \'',file,'\'
    from (
       select \'',t,'\'
       union all
       SELECT col from tbl where x      
    ) a' 
);
PREPARE stmt1 FROM @myvar;
EXECUTE stmt1;
Deallocate prepare stmt1;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top