En esta ocasión quiero compartir la manera en la que he realizado la importación de datos a Mysql usando php, teniendo en cuenta que los datos que se necesita importar se encuentran en un archivo con extensión XLS (excel). A continuación presento la manera en que lo he realizado.
Paso 1: Crear tabla mysql en la cual realizare el vaciado de datos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
-- -- Base de datos: `test` -- -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `productos` -- CREATE TABLE IF NOT EXISTS `productos` ( `id` int(11) NOT NULL, `codigo` varchar(30) NOT NULL, `descripcion` varchar(150) NOT NULL, `fabricante` int(30) NOT NULL, `precio` double NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Índices para tablas volcadas -- -- -- Indices de la tabla `productos` -- ALTER TABLE `productos` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT de las tablas volcadas -- -- -- AUTO_INCREMENT de la tabla `productos` -- ALTER TABLE `productos` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; |
Paso 2: Abrir el archivo excel donde se encuentran almacenados los datos que queremos importar y guardarlo como CSV “delimitado por comas”. Nombrar el archivo “products.csv” , Se debe almacenar en la misma ruta donde pondremos nuestro archivo php .
Paso 3: Crear el archivo llamado “importar.php“.
Paso 4: Dentro del archivo importar.php colocar el siguiente fragmento de codigo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
<?php # conectare la base de datos $con=@mysqli_connect("localhost", "root", "root", "test"); if(!$con){ die("imposible conectarse: ".mysqli_error($con)); } if (@mysqli_connect_errno()) { die("Connect failed: ".mysqli_connect_errno()." : ". mysqli_connect_error()); } $productos = fopen ("products.csv" , "r" );//leo el archivo que contiene los datos del producto while (($datos =fgetcsv($productos,1000,",")) !== FALSE )//Leo linea por linea del archivo hasta un maximo de 1000 caracteres por linea leida usando coma(,) como delimitador { $linea[]=array('codigo'=>$datos[0],'descripcion'=>$datos[1],'fabricante'=>$datos[2],'precio'=>$datos[3]);//Arreglo Bidimensional para guardar los datos de cada linea leida del archivo } fclose ($productos);//Cierra el archivo $ingresado=0;//Variable que almacenara los insert exitosos $error=0;//Variable que almacenara los errores en almacenamiento $duplicado=0;//Variable que almacenara los registros duplicados foreach($linea as $indice=>$value) //Iteracion el array para extraer cada uno de los valores almacenados en cada items { $codigo=$value["codigo"];//Codigo del producto $descripcion=$value["descripcion"];//descripcion del producto $fabricante=$value["fabricante"];//fabricante del producto $precio=$value["precio"];//precio del producto $sql=mysqli_query($con,"select * from productos where codigo='$codigo'");//Consulta a la tabla productos $num=mysqli_num_rows($sql);//Cuenta el numero de registros devueltos por la consulta if ($num==0)//Si es == 0 inserto { if ($insert=mysqli_query($con,"insert into productos (codigo, descripcion, fabricante, precio) values('$codigo','$descripcion','$fabricante','$precio')")) { echo $msj='<font color=green>Producto <b>'.$descripcion.'</b> Guardado</font><br/>'; $ingresado+=1; }//fin del if que comprueba que se guarden los datos else//sino ingresa el producto { echo $msj='<font color=red>Producto <b>'.$codigo.' </b> NO Guardado '.mysqli_error().'</font><br/>'; $error+=1; } }//fin de if que comprueba que no haya en registro duplicado else { $duplicado+=1; echo $duplicate='<font color=red>El Producto codigo <b>'.$codigo.'</b> Esta duplicado<br></font>'; } } echo "<font color=green>".number_format($ingresado,2)." Productos Almacenados con exito<br/>"; echo "<font color=red>".number_format($duplicado,2)." Productos Duplicados<br/>"; echo "<font color=red>".number_format($error,2)." Errores de almacenamiento<br/>"; ?> |
Paso 5: Ahora solo nos resta ejecutar el archivo “importar.php” en nuestro servidor para que realize la importacion de los datos a nuestra tabla mysql.