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';
¡Perfecto! Obviamente también funciona con múltiples campos: echo 'select column1, column2, column3 from database.table;' | mysql -u user -ppassword> output.txt –
¡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
@axil Usa la opción '-N, --skip-column-names'. –