PHP - CSV con N° y orden de campos variable

 
Vista:
Imágen de perfil de JuanK
Val: 6
Ha aumentado su posición en 26 puestos en PHP (en relación al último mes)
Gráfica de PHP

CSV con N° y orden de campos variable

Publicado por JuanK (3 intervenciones) el 14/09/2019 10:55:28
Buen dia, por favor, necesito subir un csv a mi DB, pero el orden de mi csv varia en cada linea.

primera linea: fecha,hora,Sn, 98.01, Sb, 1.01, Cu, 0.5
segunda linea: fecha,hora,, Cu, 1.01, Co, 0.005, Ag, 0.1

Mi DB tiene los campos:

fecha - hora - Sn - Sb - Cu - Co - Ag

lo que quiero es subir la data a mi DB y acomodar los números dentro de cada campo correspondiente.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

CSV con N° y orden de campos variable

Publicado por joel (1269 intervenciones) el 14/09/2019 16:56:40
Hola JuanK, creo que hay un error en la segunda columna, faltaría una coma mas, no? algo así:

primera linea: fecha,hora,Sn, 98.01, Sb, 1.01, Cu, 0.5
segunda linea: fecha,hora,,, Cu, 1.01, Co, 0.005, Ag, 0.1

O son dos archivos csv diferentes?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanK
Val: 6
Ha aumentado su posición en 26 puestos en PHP (en relación al último mes)
Gráfica de PHP

CSV con N° y orden de campos variable

Publicado por JuanK (3 intervenciones) el 14/09/2019 17:26:38
No son dos archivos distintos. Es un solo csv. Con varias líneas. Cómo ejemplo solo pongo dos líneas. No faltan más comas, en la segunda linea después del campo hora hay una coma y sigue Cu luego una coma y el valor numérico. Es por esto q describía q las líneas del csv no tenian el mismo orden no longitud.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

CSV con N° y orden de campos variable

Publicado por joel (1269 intervenciones) el 15/09/2019 08:31:57
Ah, ok, creía que en cada columna había el mismo tipo de contenido, disculpa...

Entonces, lo que tienes que hacer es leer linea por linea, y ir analizando el contenido de la misma revisando que tipo de elementos hay y ir creando el contenido del INSERT.

Este ejemplo esta pensado para utilizarlo con PDO:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$csv = array_map('str_getcsv', file('x.csv'));
 
$params=array();
$values="fecha, hora";
 
foreach ($csv as $line) {
    for ($i==0; $i<count($line); $i++) {
        if ($line[$i]) {
            if ($i<2) { //fecha, hora
                $params[]=$line[$i];
            }
            if (in_array($line[$i], array("Sn", "Sb", "Cu", "Co", "Ag"))) {
                $values=", ".$line[$i];
                $params[]=$i+1;
            }
        }
    }
}
 
$query="INSERT INTO tabla ".$values." VALUES (?,?,?,?,?,?,?)";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JuanK
Val: 6
Ha aumentado su posición en 26 puestos en PHP (en relación al último mes)
Gráfica de PHP

CSV con N° y orden de campos variable

Publicado por JuanK (3 intervenciones) el 15/09/2019 09:05:37
Muchas gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar