
EXPORTAR UNA CONSULTA A UN FICHERO EN MYSQL
En MySQL, la cláusula SELECT ... INTO OUTFILE se utiliza para exportar una consulta a un fichero en mysql. A continuación, te detallo las principales opciones y características de esta funcionalidad:
SELECT campo1,campo2, ... , campoN
INTO OUTFILE 'ruta/fichero/fichero.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM tabla;
WHERE condiciones
Opciones principales
- INTO OUTFILE 'ruta_del_archivo':
- Especifica la ubicación y el nombre del archivo donde se guardarán los datos.
- El archivo se crea en el servidor MySQL, no en el cliente.
- Ejemplo: INTO OUTFILE '/tmp/datos.txt'
- FIELDS TERMINATED BY 'carácter':
- Define el carácter que separa los campos en el archivo.
- Por defecto, es una tabulación (\t).
- Ejemplo: FIELDS TERMINATED BY ',' (para un archivo CSV).
- ENCLOSED BY 'carácter':
- Especifica el carácter que encierra los valores de los campos (opcional).
- Por ejemplo, comillas para texto: ENCLOSED BY '"'.
- Útil para datos que pueden contener el separador de campos.
- ESCAPED BY 'carácter':
- Define el carácter de escape para caracteres especiales (como \n, \t, etc.).
- Por defecto, es \.
- Ejemplo: ESCAPED BY '\\'.
- Especifica el carácter que termina cada línea en el archivo.
- Por defecto, es \n (salto de línea).
- Ejemplo: LINES TERMINATED BY '\r\n' (para sistemas Windows).
SELECT id, nombre, email
FROM usuarios
WHERE activo = 1
INTO OUTFILE '/tmp/usuarios.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
Consideraciones
- Permisos: El usuario de MySQL debe tener el privilegio FILE para usar INTO OUTFILE. Además, el servidor debe tener permisos de escritura en la ruta especificada.
- Ruta del archivo: La ruta es relativa al servidor MySQL, no al cliente. Por lo general, se usa un directorio como "/tmp/" o una ubicación configurada en la variable secure_file_priv del servidor.
- Formato del archivo: El archivo generado es de texto plano, pero puedes personalizar el formato (CSV, TSV, etc.) con las opciones mencionadas.
- Alternativa para clientes: Si deseas exportar datos desde un cliente, considera usar herramientas como mysqldump o el comando mysql con redirección (> archivo.csv).
Restricciones
- No puedes sobrescribir un archivo existente con INTO OUTFILE a menos que configures específicamente el servidor para permitirlo.
- La variable secure_file_priv puede limitar las rutas donde se pueden escribir los archivos. Verifica su valor con la sentencia "SHOW VARIABLES LIKE 'secure_file_priv';."