2008-12-12 9 views

Respuesta

21
SELECT A,B,C 
FROM X 
INTO OUTFILE 'file name'; 

Es necesario el privilegio FILE para hacer esto, y no va a sobrescribir los archivos.

INTO OUTFILE tiene un montón de opciones para que así, como FIELDS ENCLOSED BY, FIELDS ESCAPED BY, etc ... que es posible que desee look up in the manual.

para producir un archivo CSV, deberías hacer algo como:

SELECT A,B,C 
INTO OUTFILE '/tmp/result.txt' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
FROM X; 

Para cargar los datos de nuevo desde el archivo, utilice el comando LOAD DATA INFILE con las mismas opciones que utilizó para volcar hacia fuera. Para el formato CSV anteriormente, que sería

LOAD DATA INFILE '/tmp/result.txt' 
INTO TABLE X 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n'; 
1

Probar:

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

OUTFILE no te producen un volcado SQL, ni mysqldump puede operar sobre subconjunto de columnas. Pero puede create table temp_weeeee select ...., exportar y soltarlo.

4

Shell de comandos

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

¡Perfecto! Obviamente también funciona con múltiples campos: echo 'select column1, column2, column3 from database.table;' | mysql -u user -ppassword> output.txt –

+0

¡Gracias por el comando shell! Esto también incluye el nombre del campo en la salida. ¿Hay alguna manera de que pueda ser omitido? – axil

+1

@axil Usa la opción '-N, --skip-column-names'. –

7

Si está utilizando phpMyAdmin,

Ejecutar la consulta

SELECT A, B, C DE X

y hay una opción de exportación en la parte inferior del resultado.

+0

Esa es definitivamente la solución más fácil. ¡¡¡Gracias hombre!!! –

Cuestiones relacionadas