LOAD DATA INFILE Syntax in MySQL - Sintaxis para la importacion de datos desde un CSV desde una base de datos MySQL. Aquí voy a presentar importar y exportar datos.
Donde:
1.- Importar de CSV a MySQL
Para que la importación de datos no tenga problemas tu base de datos y el archivo CSV tienen que tener la misma collation (si es UTF8 tu DB, el archivo debe ser igual)
$ LOAD DATA INFILE '/var/home/wilzonmb.com/data/persona.csv’ into table persona; # Lo normal
$ LOAD DATA LOCAL INFILE '/home/wilzonmj/persona.csv’ into table persona; # Me funciona en sitios q tiene permisos restringidos
Si se desea ignorar un linea, por ejemplo para q no inserte la cabecera se hace asi (al poner IGNORE 1, le decimos que ignore la primera fila):
LOAD DATA INFILE '/var/home/wilzonmb.com/data/persona.csv’ INTO TABLE persona
IGNORE 1 LINES;
Importar CSV con parámetros más completos.- Importamos los datos cuando la separación de lso campos son en tabulaciones "\t".
$ LOAD DATA INFILE '/var/home/wilzonmb.com/data/persona.csv'
INTO TABLE persona
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
2.- Exportar a CSV desde MySQL
Ejemplo básico
SELECT * FROM personas INTO OUTFILE '/var/home/wilzonmb.com/data/persona_backup.csv';
Ejemplo exportacion más completa: Escapando las comillas dobles.
SELECT * FROM personas
INTO OUTFILE '/var/home/wilzonmb.com/data/persona_backup.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'";
Ejemplo con PHP
Ejemplo 01: Completamente funcional de como exportar con PHP y MySQLI
$mysqli = new mysqli("localhost", "usuario_wilzonmb", "mi_clave", "base_de_datos");
/* checkear conección */
if (mysqli_connect_errno()) {
printf("Error de conexión: %s\n", mysqli_connect_error());
exit();
}
$dateToday = date('d-m-Y-h-i-s');
$comilla = '"';
$archivo = "/var/home/wilzonmb.com/data/persona.csv/$dateToday.csv";
$sql = "SELECT * FROM persona
INTO OUTFILE '$archivo'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '$comilla' ESCAPED BY '$comilla'
LINES TERMINATED BY '\n'";
$resutl = $mysqli->query($sql);
if ($resutl)
$mysqli->error;
else
echo 'Exportado correctamente :)';
$mysqli->close();