SELECT A,B,C
FROM X
INTO OUTFILE 'file name';
È necessario il privilegio FILE per fare questo, e non sarà sovrascrivere i file.
INTO OUTFILE
ha un sacco di opzioni per esso pure, come ad esempio FIELDS ENCLOSED BY
, FIELDS ESCAPED BY
, ecc ... che si può decidere di look up in the manual.
per produrre un file CSV, si potrebbe fare qualcosa di simile:
SELECT A,B,C
INTO OUTFILE '/tmp/result.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM X;
per caricare i dati di nuovo dal file, utilizzare il comando LOAD DATA INFILE
con le stesse opzioni che hai utilizzato per scaricare fuori. Per il formato CSV sopra, che sarebbe
LOAD DATA INFILE '/tmp/result.txt'
INTO TABLE X
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
Perfetto! Ovviamente funziona anche con più campi: echo 'seleziona column1, column2, column3 da database.table;' | mysql -u utente -ppassword> output.txt –
Grazie per il comando della shell! Ciò include anche il nome del campo nell'output. C'è un modo in cui può essere ommited? – axil
@axil Utilizzare l'opzione '-N, --skip-column-names'. –