[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Offtopic: Actualizar BD en perl.



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;








[Hilos de Discusión] [Fecha] [Tema] [Autor]