Módulo H: IMPORTAR DATOS (CSV)

Transcripción

Módulo H: IMPORTAR DATOS (CSV)
Módulo H: IMPORTAR DATOS (CSV)
Objetivo del Módulo:
Facilitar la importación de información a nuestro aplicativo
Nuestros usuarios suelen solicitarnos que llenemos con información nuestros aplicativos,
pero esta información suele ser de cientos e incluso miles de registros que nos tardarían
demasiado tiempo y que no es conveniente para nosotros.
Teniendo en cuenta lo anterior en este módulo explicaremos dos formas de hacer esto, una
de ellas mediante programación ahorrándonos una gran cantidad de trabajo y tiempo. Cabe
aclarar que este proceso se realiza por cada tabla de base de datos que tengamos.
Para llevar a cabo este asunto vamos a tener en cuenta que la información debe estar
(digital) en una hoja de cálculo en formato .csv .
¿Qué es csv ?
Los archivos CSV (del inglés comma-separated values) son un tipo de documento en
formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se
separan por comas (o punto y coma)
¿Cómo tener una hoja de cálculo en .csv?
Imaginemos que tenemos una base de datos de un colegio con una tabla estudiante con los
siguientes datos
Y la institución educativa nos informa que tiene una hoja de cálculo de Excel con una gran
cantidad de registros con información de estudiantes los cuales debemos ingresar en el
aplicativo.
Lo primero que debemos hacer es solicitar que las columnas de la hoja de se encuentren en
el mismo orden de los campos de nuestra base de datos y en caso de encontrarse la eliminar
la fila número 1 que contiene nuestra cabecera informativa, en caso contrario debemos
hacerlo nosotros.
Por ejemplo
Para convertir en .csv debemos dirigirnos en nuestra hoja de cálculo a la opción de menú
 Archivo
 Guardar como
 Asignar un nombre
 En la barra de tipo seleccionar csv en cualquiera de sus formatos
 Guardar preferiblemente en escritorio y confirmar cualquier mensaje
Después de tener nuestro archivo explicaremos la primera forma de importar la
información es utilizando nuestro phpMyAdmin.
1. Lo primero que debemos hacer es ingresar a nuestra base de datos y dentro de ella
seleccionar la opción de importar
Posterior a ello teniendo en cuenta la imagen anterior debemos hacer clic sobre el botón
seleccionar archivo y buscar nuestro archivo csv creado anteriormente
Posterior a ello debemos especificar en el campo “Columnas separadas por:” que los campos
están separados por (punto y coma) ;
Y finalmente en el botón continuar del final de la página de importar que a continuación
nos presenta un mensaje de éxito.
Con los registros correctamente insertados nos dirigimos a la opción examinar para
visualizarlos
2. La segunda opción se presenta cuando la entidad nos manifiesta que no tiene esa
información rápidamente y por lo cual debemos dejar una opción en nuestro
aplicativo para que este proceso lo haga la entidad,

Es importante mencionar que para este proceso la entidad deberá tener una hoja de
cálculo de los datos y las columnas deben estar ordenadas igual que en la opción
número 1.
A continuación presentaremos un ejemplo en el cual tenemos un módulo de estudiantes de
un aplicativo y añadiremos la opción de importar datos.
En primera instancia tendremos una carpeta un nuestro archivo index.php con una consulta
de base de datos de la tabla estudiantes .Por agilidad hemos insertado en una celda un
formulario con input de tipo file que sirve para subir archivos el cual observamos en el
módulo anterior y botón que nos redirigirá al archivo importar.php.
Archivo index.php
Cuando seleccionamos el botón “seleccionar un archivo” se nos abre una ventana de
dialogo el cual nos permitirá seleccionar el archivo que contiene la información de
estudiantes
Archivo index.php
Al presionar sobre y abrir, seguido del botón importar nuestro proceso pasará al archivo
importar.php el cual realiza las siguientes actividades..
Importar.php
<?php
require 'conexion.php'; //llamamos archivo de conexion para insertar
celdas en bd
$archivo= $_FILES['datos']['tmp_name']; //Recibimos la ruta temporal del
documento
$TablayCamposbd = 'estudiante(id_estudiante,nombre, apellido,direccion)
'; // determinamos el nombre de la tabla y campos a insertar en el orden
de la base de datos
if (($archivo_abierto = fopen($archivo, "r")) !== FALSE) { //leemos el
archivo mediante fopen y validamos si no lo está haciendo
$nombres_campos = fgetcsv($archivo_abierto, 0, ",", "\"", "\"");// Leemos
los nombres de los campos(cabeceras) en caso de tener encabezados sino
comentar
//$num_campos = count($nombres_campos); // podemos contar la cantidad de
registros opcional // $row = 1;
$insertar ="INSERT INTO $TablayCamposbd Values"; //Consulta de base datos
$ValoresDeInsert =""; // Creamos un espacio para asignar valores de
insert
while ($celdas = fgetcsv ($archivo_abierto, 1000, ";")){ //obtenemos
las celdas del archivo separadas por ;
$ValoresDeInsert =
$ValoresDeInsert.'("'.$celdas[0].'","'.$celdas[1].'","'.$celdas[2].'","'.
$celdas[3].'"),';// ValoresDeInsertUES (celda[n] )"; //determinamos la
cantidad y posiciones de celda de un registro
}
$ValoresDeInsertSinComaAlFinal = substr ($ValoresDeInsert, 0,
strlen($ValoresDeInsert) - 1); // eliminar el ultimos punto y coma del
inset
$sql = $insertar.''.$ValoresDeInsertSinComaAlFinal.''; //Unimos la
consulta insert y los valores extraidos de la hoja de calculo para ser
insertados
$insertar = $mysqli -> query ($sql); //Enviamos la consulta a base de
datos
if ($mysqli->affected_rows > 0) { ?> <!-- si se inserto correctamente ->
<script type="text/javascript">
alert ('datos importados correctamente'); //presentamos un mensaje de
exito
window.location = 'index.php' ; //redireccionamos al archivo inicial
</script>
<?php
}
else {?> <!-- de lo contrarioe -->
<script type="text/javascript">
alert ('verificar información'); //presentamos un mensaje de
verificación
window.location = 'index.php' ;//redireccionamos al archivo inicial
</script>
<?php
}
} //cerramos el if de la linea 5
?>
El cual finalmente nos presenta un aviso de notificación de éxito y redirige a nuestro
archivo index.php con los registros correctamente importados
Archivo index.php
Nota: Si tiene inconvenientes en caso de importar una gran cantidad de
registros debemos modificar el tiempo de ejecución de wampserver en el
archivo php.ini del wamp, modificar el siguiente valor y dejar en cero
para ilimitado:
max_execution_time = 0
Conclusiones:



La importación de archivos es de gran importancia para ahorrar tiempo y trabajo en
la migración de información a nuestro aplicativo
El tiempo de importación va a variar de acuerdo a la velocidad del pc, cantidad de
registros, cantidad de campos etc. (aproximadamente 3:49 para 5050 registros)
Por facilidad para el presente ejercicio tomamos 2 registros pero perfectamente
pueden ser una n cantidad teniendo en cuenta que mysql soporta unos 12000
registros aunque con 5000 iniciamos a tener una pérdida de rendimiento
EJERCICIOS:
1. Teniendo en cuenta registros libres en Excel que encontramos en la web, realizar
diversas pruebas con un gran volumen de datos con el fin de realizar test de fuerza
bruta al script.
Lista de referencias.
http://php.net/manual/es/function.fgets.php
http://php.net/manual/es/function.fopen.php
http://php.net/manual/es/function.substr.php

Documentos relacionados