Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

CSV a MySQL: Error números de campos

Estas en el tema de CSV a MySQL: Error números de campos en el foro de Mysql en Foros del Web. Buenas, la situaciones es la siguiente: En el colegio para el cual trabajo me pidieron que instale Moodle, pero que intente asociar la bd de ...
  #1 (permalink)  
Antiguo 02/04/2011, 16:44
 
Fecha de Ingreso: agosto-2010
Mensajes: 100
Antigüedad: 13 años, 8 meses
Puntos: 2
CSV a MySQL: Error números de campos

Buenas, la situaciones es la siguiente:
En el colegio para el cual trabajo me pidieron que instale Moodle, pero que intente asociar la bd de Moodle con la de un sistema que tienen ellos para manejar el almuerzo de los chicos. Con la finalidad de que un alumno o padre no tenga 2 cuentas y 2 contraseñas distintas (coherente hasta ahi).
A priori asociar dos tablas completamente distintas se me hizo algo loco y jamás opte por llevar a cabo dicha tarea. Lo que si se me ocurrió e hice fue, con un script en PHP obtener algunos datos que me eran útiles de la bd del sistema (nombre, apellido, usuario, clave y e-mail). Una vez obtenidos, el mismo script creaba un archivo csv por curso, con esta información, junto a datos que agregue yo correspondientes a los campos de la tabla de usuarios de Moodle.
Las líneas CSV quedan con el siguiente formato:
Cita:
,email,1,0,0,1,fangelettialba,8fb96f174f4b299746bd d391eb77ed00,,Florencia,"Angeletti Alba",,0," "," "," "," "," "," "," "," "," ","La Plata",AR,es," ",99,1301782780,1301782780,1301782780,1301782780,0 00.000.00.00,14c086XLNmM3AoL," "," ",0,1,0,2,1,1,1,0,1301782780,0,0,NULL,0
Y el error que me devuelve cuando intento cargar la bd desde esos ficheros es:
Cita:
El número de campos de los datos CSV en la línea 1 no es válido.
Evidentemente hay algo mal en el formato de la línea, porque desde el script imprimo 51 campos para 51 campos de la tabla de Moodle.
Tampoco estoy muy seguro si estoy generando bien los CSV. Todos los campos deben ir entre comillas ?? con el campo de id que hago ? imprimo un espacio en blanco?.
Agradecería cualquier ayuda.
Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 02/04/2011, 17:56
Avatar de mko
mko
 
Fecha de Ingreso: agosto-2010
Ubicación: la vida es un riesgo
Mensajes: 101
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: CSV a MySQL: Error números de campos

aver esto lo hice ya hace un tiempecito y lo que hice fue separar los ampos de cada tupla por (;) la cosa es que cada tupla debe estar separada por un salto de linea y los campos deben de ser iguales a los de tu tabla
poe ahi e de tener el scrip deja lo busco y t los paso espera
__________________
cuando no esperas nada y obtienes todo eso es destino
  #3 (permalink)  
Antiguo 02/04/2011, 18:04
 
Fecha de Ingreso: agosto-2010
Mensajes: 100
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: CSV a MySQL: Error números de campos

Cita:
Iniciado por mko Ver Mensaje
aver esto lo hice ya hace un tiempecito y lo que hice fue separar los ampos de cada tupla por (;) la cosa es que cada tupla debe estar separada por un salto de linea y los campos deben de ser iguales a los de tu tabla
poe ahi e de tener el scrip deja lo busco y t los paso espera
Dale, gracias. Por ahora lo estuve trabajando con la funcion fputcsv de php.
  #4 (permalink)  
Antiguo 19/07/2011, 12:49
Avatar de mko
mko
 
Fecha de Ingreso: agosto-2010
Ubicación: la vida es un riesgo
Mensajes: 101
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: CSV a MySQL: Error números de campos

esto es el codigo que te habia dicho
tambien tienes que crear una carpeta dentro de tu directorio raiz con el nombre mko puedes cambiar el nombre de la carpeta si lo deceas hacr


adaptalo a tus necesidades y espero no aver con testado muy tarde jajajaja

aqui lo que falta es validar que el archivo cargado sea de la estencion scv
todo en un solo fichero sale.

Código HTML:
<form action="scv.php" method="post" enctype="multipart/form-data">
 
                        <p align="left" class="Estilo4"><span class="topmenu2">1.- busca el fichero con la extencion ".csv" <br>
                        2.- click en cargar csv</span><br>
                        <p align="left">
                          <input name="archivo" type="file" class="contorno" size="35" />
                          <input name="enviar" type="submit" class="boton" value="cargar csv" />
                          
                          <input name="action" type="hidden" value="upload" />     
                         </p>
                      </form> 
Código PHP:
                        <?php 
                         $conexion
mysql_pconnect ("localhost","root");//Estableciendo la conexion php y mysql
mysql_select_db("scei",$conexion);
                      if (isset(
$_POST['enviar'])) 
{
$status "";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo"]['size'];
    
$tipo $_FILES["archivo"]['type'];
    
$archivo $_FILES["archivo"]['name'];
   
    
    if (
$archivo != "") {
        
// guardamos el archivo a la carpeta mko si cambias el nombre tambie cabia la ruta respectiva
        
$destino =  "../mko/".$archivo;
        if (
copy($_FILES['archivo']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo."</b><br>";
        echo
"$status";
        } else {
            
$status "Error al subir el archivo";
        echo
"$status";
        }
    } else {
        
$status "Error al subir archivo";
    echo
"$status";
    }
// aqui como tenia algunos problimitas con la carga que es el erro que tienes con cambio de extencion el archivo y vual

rename("../mko/$archivo""../mko/kanaima.txt");


$fp fopen ("../mko/kanaima.txt","r"); 
$row 1
while (
$data fgetcsv ($fp1000";")) 

$num count ($data); 
$row++; 
$insertar="INSERT INTO generar (id,control,nombre,paterno,materno,carrera) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]')"
mysql_query($insertar); 

fclose ($fp); 

unlink('../mko/kanaima.txt');// con esto elimino el archivo que renombre y listo
echo "<div>Los Datos Han Sido Cargados a La Tabla Alumno</div>"
}
}

?>
__________________
cuando no esperas nada y obtienes todo eso es destino

Etiquetas: campos, csv
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:33.