Pregunta

Estoy escribiendo el siguiente script, importe un archivo CSV en una base de datos MySQL. El usuario debe iniciar sesión primero y sus derechos de seguridad para cargar son verificados por otro archivo, si esto se evalúa en verdadero, el archivo puede ser cargado por el cargador de archivo que solo permitirá que los CSV se carguen y luego la siguiente parte Importa el archivo.

¿Estoy usando el código correcto para esto a continuación?, También si el diseño de CSV es incorrecto, ¿es posible rechazar la importación?, Me preocupa que esto pueda salir mal si el CSV está formateado correctamente. Esta característica se ha solicitado como un requisito para este proyecto, por lo que solo estoy tratando de hacer que sea lo más idiota posible para ellos.

<?php
$uploadedcsv = './uploads/'.$filename.'';
$sql = 'LOAD DATA LOCAL INFILE "'.$uploadedcsv.'" INTO TABLE '.$table.' FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" IGNORE 1 LINES' or die(mysql_error());
?>
¿Fue útil?

Solución

A menos que esté al 100%, confíe en el usuario y parece que no lo es, será bueno no importar ciegamente el archivo cargado, sino primero para verificar si es correcto.

Para hacerlo, deberá abrir y leer el archivo, por ejemplo, con fgetcsv y para verificar la consistencia de datos línea por línea.


Puede encontrar muchos ejemplos en la web.

Aquí hay solo algunos:

Otros consejos

Se puede hacer a través de MySQL, pero por defecto el infile de datos de carga espera un formato diferente al CSV. De la documentación:

If you specify no FIELDS or LINES clause, the defaults are the same as if you had written this:

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''

Las notas de documentación, para cuando se trata de archivos CSV:

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

Que es un ejemplo de tratar con valores separados por comas encerrados por "" y separados por línea por r n

Para usar esto para importar un archivo, asegúrese de que su declaración coincida con el formato CSV de sus archivos de carga y pueda importar de esta manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top