LOAD DATA INFILE Syntax in MySQL

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:

  • INTO OUTFILE : directorio y archivo donde se guardara. ( /var/home/wilzonmb.com/data/persona.csv )
  • FIELDS TERMINATED BY : separador de cada campo.
  • ENCLOSED BY : delimitación de campo. (columna encerrado por ejem:: comilla)
  • LINES TERMINATED BY : separador de fila.

 
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();