Bucle importar txt a mysql con php
Publicado por GaryHost (1 intervención) el 18/04/2018 14:10:03
Hola a todos, a ver si me podéis echar una manita.
Estoy importando un fichero de texto con php a una base de datos MySQL.
La estructura del archivo de texto es la siguiente:
Y la estructura de la tabla es
Os explico: en el archivo de textoi el campo CÓDIGO se corresponde con idContratos.
El campo CPTO puede tener 0, 1 o varios valores que corresponden con el campo DIFERENCIA del archivo de texto y están separados por "ý".
Además a veces un valor de un campo se corresponde con otro vacío en el otro.
Necesito el algoritmo para lea esa línea, y en caso de que existan varios valores en dichos campos, cree un registro en la BBDD para cada uno de ellos con el mismo campo CÓDIGO en el atributo idContratos.
Es decir, si tengo esto: 00015]001ý099ý203]70000ý-13650ý4995]]
Lo tengo que convertir en: 00015]001]70000]
00015]099]13650]
00015]203]4995]
Para insertarlo como:
INSERT [...] VALUES (NULL, '00015', '001', ]70000, '2018-04-18 00:00:00', '2018-04-18 00:00:00', '0', '$observaciones')";
INSERT [...] VALUES (NULL, '00015', '099', ]13650, '2018-04-18 00:00:00', '2018-04-18 00:00:00', '0', '$observaciones')";
INSERT [...] VALUES (NULL, '00015', '203', ]4995, '2018-04-18 00:00:00', '2018-04-18 00:00:00', '0', '$observaciones')";
Mi código hasta ahora solo lee el archivo y lo inserta tal cual, ignorando los valores que vienen detrás del primer separador "ý".
Gracias de antemano,
Saludos.
Estoy importando un fichero de texto con php a una base de datos MySQL.
La estructura del archivo de texto es la siguiente:
1
2
3
CODIGO]CPTO]IMPORTE ]Diferencia ]
00015]001ý099ý203]70000ý-13650ý4995]]
00096]001ý098]84142ý-16407.69]ýýýýýýýýýýý-3005]
1
2
3
4
5
6
7
8
9
`tLineasPendientesPruebas` (
`id` int(11) NOT NULL,
`idContratos` int(11) NOT NULL,
`idConceptosMaestra` int(11) NOT NULL,
`importe` float NOT NULL,
`fechaAlta` datetime NOT NULL,
`fechaCobro` datetime NOT NULL,
`factura` tinyint(1) NOT NULL,
`observacion` text
Os explico: en el archivo de textoi el campo CÓDIGO se corresponde con idContratos.
El campo CPTO puede tener 0, 1 o varios valores que corresponden con el campo DIFERENCIA del archivo de texto y están separados por "ý".
Además a veces un valor de un campo se corresponde con otro vacío en el otro.
Necesito el algoritmo para lea esa línea, y en caso de que existan varios valores en dichos campos, cree un registro en la BBDD para cada uno de ellos con el mismo campo CÓDIGO en el atributo idContratos.
Es decir, si tengo esto: 00015]001ý099ý203]70000ý-13650ý4995]]
Lo tengo que convertir en: 00015]001]70000]
00015]099]13650]
00015]203]4995]
Para insertarlo como:
INSERT [...] VALUES (NULL, '00015', '001', ]70000, '2018-04-18 00:00:00', '2018-04-18 00:00:00', '0', '$observaciones')";
INSERT [...] VALUES (NULL, '00015', '099', ]13650, '2018-04-18 00:00:00', '2018-04-18 00:00:00', '0', '$observaciones')";
INSERT [...] VALUES (NULL, '00015', '203', ]4995, '2018-04-18 00:00:00', '2018-04-18 00:00:00', '0', '$observaciones')";
Mi código hasta ahora solo lee el archivo y lo inserta tal cual, ignorando los valores que vienen detrás del primer separador "ý".
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$filas=file('datos.txt');
foreach($filas as $value){
list($idContratos,$idConceptosMaestra,$importe,$observaciones) = explode("]", $value);
$importeDecimales = $importe;
$importeDecimales = number_format($importeDecimales / 100, 2, '.', '');
$insert = "INSERT INTO tLineasPendientesPruebas (id, idContratos, idConceptosMaestra, importe, fechaAlta, fechaCobro, factura, observacion) VALUES (NULL, '$idContratos', '$idConceptosMaestra', $importeDecimales, '2018-04-18 00:00:00', '2018-04-18 00:00:00', '0', '$observaciones')";
$resultado=mysql_query($insert, $con);
echo "<br>IdContratos: " .$idContratos;
echo "<br>Id Conceptos: " . $idConceptosMaestra ;
echo "<br>Importe: " . $importeDecimales;
echo "<br>Observaciones" . $observaciones;
} ?>
Gracias de antemano,
Saludos.
Valora esta pregunta
0