2008-12-12 8 views

risposta

21
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'; 
1

Prova:

SELECT col1, col2 
    INTO OUTFILE '/filepath/export.txt' 
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
FROM table; 
5

OUTFILE non produce un dump di SQL, né mysqldump può operare su subset di colonne. Ma puoi create table temp_weeeee select .... esportarlo e rilasciarlo.

4

shell di comando

echo 'select field from db.table;' | mysql -u user -p password > output.txt 
+1

Perfetto! Ovviamente funziona anche con più campi: echo 'seleziona column1, column2, column3 da database.table;' | mysql -u utente -ppassword> output.txt –

+0

Grazie per il comando della shell! Ciò include anche il nome del campo nell'output. C'è un modo in cui può essere ommited? – axil

+1

@axil Utilizzare l'opzione '-N, --skip-column-names'. –

7

Se si utilizza phpMyAdmin,

Eseguire la query

SELEZIONE A, B, C DA X

e v'è un opzione di esportazione nella parte inferiore del risultato.

+0

Questa è sicuramente la soluzione più semplice. Grazie uomo!!! –