Archivo plano ascii
Publicado por Vicente Cayo B. (3 intervenciones) el 09/08/2006 02:01:12
Tengo un problema al parecer con el retorno de linea.
Necesito actualizar una tabla de una base de datos, la informacion la debo de tomar de un archivo texto (delimitado por comas), pero no puedo determinar donde concluye una linea.
En los datos de ejemplo que estoy poniendo abajo e insertado una linea en blanco entre linea y linea para no confundir.
Cuando empleo este comando me retorna en $lineas un arreglo con todos los datos de todas las filas, pero yo necesito solo los datos de una fila para asi poder hacer inser o update a mi tabla y posteriormente tomar la siguiente fila.
$lineas = split(',',$content);
Entorno
======
Linux Mandriva 2006, Postgresql 8 y PHP5.
Esta es la data (ENVLORDC.TXT)
========================
"200601068","02","5","07919","TAIMA INTERNATIONAL INC."," -",20060720,3852.0000,22726.80,"DOL","C30","Compra de Calzado","MGUTIERR",20060905,20060905,"CAL",""
"200601079","02","5","07777","MANUFACTURA BOLIVIANA S.A./MANACO","FABRICA DE CALZADO MANACO CASILLA 513 COCHABAMBA",20060719,600.0000,4710.00,"DOL","F90","Compra de Calzado","MGUTIERR",20060915,20060915,"CAL",""
"200600844","02","5","07796","LEA INTERNATIONAL","RM.1106 #18 XIBAH DONGLI CHAO YANG DISTR. -",20060614,2120.0000,13610.40,"DOL","C12","Compra de Calzado","MGUTIERR",20060730,20060730,"CAL",""
Este es el codigo
============
function pMigra_Ordenes3() {
print "Migrando datos de Ordenes de Compra a sComercial<br>";
//$cnx = gConecBD('ADODB', 'pgsql', 'scomercial');
$arch = "/var/www/htdocs/temporal/ENVLORDC.TXT";
$fp = fopen($arch,"rt");
$content = fread($fp,filesize($arch));
fclose($fp);
$lineas = split(',',$content);
//print_r($lineas)."<br>";
//echo count($lineas)."<br>";
// Aqui deberia recorrer linea por linea el archivo de texto.
for ($i=0; $i < count($lineas); $i ) {
//echo $lineas[0]."<br>";
// Aqui verifico si ya existe el registro.
$sql = "select nro_ocompra from tocompra where nro_ocompra = '".$lineas[0]."'";
//$cnx->debug = true;
$reg = $cnx->Execute($sql);
if ($reg === false) die($cnx->ErrorMsg());
$nReg = $reg->RecordCount();
unset($sql); $reg->close();
if ($nReg>0) {
// actualizo el registro
$sql = "update .......";
}else{
// inserto nuevo registro
$sql = "insert .......";
}
//$cnx->debug = true;
$reg = $cnx->Execute($sql);
if ($reg === false) die($cnx->ErrorMsg());
unset($sql); $reg->close();
}
//$cnx->close();
}
Muchas gracias por su ayuda.
Necesito actualizar una tabla de una base de datos, la informacion la debo de tomar de un archivo texto (delimitado por comas), pero no puedo determinar donde concluye una linea.
En los datos de ejemplo que estoy poniendo abajo e insertado una linea en blanco entre linea y linea para no confundir.
Cuando empleo este comando me retorna en $lineas un arreglo con todos los datos de todas las filas, pero yo necesito solo los datos de una fila para asi poder hacer inser o update a mi tabla y posteriormente tomar la siguiente fila.
$lineas = split(',',$content);
Entorno
======
Linux Mandriva 2006, Postgresql 8 y PHP5.
Esta es la data (ENVLORDC.TXT)
========================
"200601068","02","5","07919","TAIMA INTERNATIONAL INC."," -",20060720,3852.0000,22726.80,"DOL","C30","Compra de Calzado","MGUTIERR",20060905,20060905,"CAL",""
"200601079","02","5","07777","MANUFACTURA BOLIVIANA S.A./MANACO","FABRICA DE CALZADO MANACO CASILLA 513 COCHABAMBA",20060719,600.0000,4710.00,"DOL","F90","Compra de Calzado","MGUTIERR",20060915,20060915,"CAL",""
"200600844","02","5","07796","LEA INTERNATIONAL","RM.1106 #18 XIBAH DONGLI CHAO YANG DISTR. -",20060614,2120.0000,13610.40,"DOL","C12","Compra de Calzado","MGUTIERR",20060730,20060730,"CAL",""
Este es el codigo
============
function pMigra_Ordenes3() {
print "Migrando datos de Ordenes de Compra a sComercial<br>";
//$cnx = gConecBD('ADODB', 'pgsql', 'scomercial');
$arch = "/var/www/htdocs/temporal/ENVLORDC.TXT";
$fp = fopen($arch,"rt");
$content = fread($fp,filesize($arch));
fclose($fp);
$lineas = split(',',$content);
//print_r($lineas)."<br>";
//echo count($lineas)."<br>";
// Aqui deberia recorrer linea por linea el archivo de texto.
for ($i=0; $i < count($lineas); $i ) {
//echo $lineas[0]."<br>";
// Aqui verifico si ya existe el registro.
$sql = "select nro_ocompra from tocompra where nro_ocompra = '".$lineas[0]."'";
//$cnx->debug = true;
$reg = $cnx->Execute($sql);
if ($reg === false) die($cnx->ErrorMsg());
$nReg = $reg->RecordCount();
unset($sql); $reg->close();
if ($nReg>0) {
// actualizo el registro
$sql = "update .......";
}else{
// inserto nuevo registro
$sql = "insert .......";
}
//$cnx->debug = true;
$reg = $cnx->Execute($sql);
if ($reg === false) die($cnx->ErrorMsg());
unset($sql); $reg->close();
}
//$cnx->close();
}
Muchas gracias por su ayuda.
Valora esta pregunta


0