[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]Hola! On Tue, 15 Jun 1999, Pepe Paniagua wrote: > Perdon por el off-topic, pero no encuentro como solucionar mi problema, > que por cierto esta muy sencillo ) > > Tengo una base de datos, en la cual realizan consultas desde el web, > eliminan registros o dan de alta registros, ( lo hago con php 3.0.9 ) hasta > aqui todo me funciona, sin embargo es necesario que esta base de datos sea > actualizada en ocaciones mediante un archivo que tengo en Ascii. el cual lo > recibo desde una pagina web. el problema es como le hago para decidir que > usar si un INSERT o un UPDATE., es decir. > > Mi base de datos contiene una tabla con estos registros. > 1*Fulano de Tal *Allende 320, colonia azteca > 2*Perengano de Su*Madero 4020, franccionamiento norte > > Mi archivo ascci que actualizara la base de datos tiene estos dos registros > 1:Fulano de Tal :Allende 1100, colonia azteca mixcoat > 3:Mengano de Tal:Zaragoza 400, col centro > > Por lo tanto el regitro 1 de actualiza y el 3 se inserta para que la tabla > de la db quede asi. > > 1*Fulano de Tal *Allende 1100, colonia azteca mixcoat > 2*Perengano de Su*Madero 4020, franccionamiento norte > 3*Mengano de Tal *Zaragoza 400, col centro > > Ya he intentado con varias forma pero no me jala, alguna sugerencia ? > Al parecer no me va a quedar de otra que meter el archivo a dos bases de > datos ( ya que noy a borrar el original ) temporales. y de ahi hacer > manipular los registros de uno por uno. > > > Saludos Pepe Paniagua > > ---------------------------------------- > Posdata: > De una vez le incluyo algo supersencillo de lo que hago una vez que > recibo el archivo lista.txt > > #!/usr/bin/perl > use DBI; > use CGI; > > # Variables generales para conectarme a la base de datos > $servidor = "miservidor.com"; > $puerto = "5432"; > $usuario = "usupostgres"; > $password = "mipassword"; > $basedato = "clientes"; > > # PRIMERO ME CONECTO A LA BASE DE DATOS > $dbh = DBI->connect("DBI:Pg:dbname=$basedato","$usuario","$password") > || die "No se puede conectar a la base de datos, error : $DBI::errstr"; > if ( !defined $dbh ) { > die "Ejele algo se te sebo pepe !\n"; > } > > # AHORA VOY A REALIZAR UNA INSERCION de varios al mismo tiempo > # PRIMERO PREPARO EL COMANDO > $sth = $dbh->prepare( " > COPY usuarios FROM '/usr/local/apache/cgi-bin/dbi/lista.txt' USING > DELIMITERS ':' "); > if ( !defined $sth ) { > die "Ya valio madrest: $DBI::errstr\n"; > } > # SEGUNDO ahora debo de ejecutar el comando > $sth->execute; > > # por ultimo me desconecto de la base de datos > $dbh->disconnect; > > > Bueno, yo no he usado PHP para accesar bases de datos, pero por que no, para cada registro del archivo ascii que recibes, haces un SELECT a la base de datos buscando dicho registro, si la consulta te regresa una tabla con registros (hay una funcion en los bind para C de postgresql para hacer eso, supongo que con PHP tambien), el registro ya existe y entonces debes hacer UPDATE, si te regresa una tabla sin registros entonces debes hacer un INSERT. Espero ayude en algo! -- Arturo Tena arturo en directmail org