Dans le code ci-dessous, il y a un hachage qui contient des enregistrements avec des champs tels que name
, pid
, type
et time1
. pid
et name
sont des champs répétitifs qui contiennent des doublons.Comment mettre à jour des enregistrements uniquement si je trouve un doublon ou si j'insère des données?
Je duplique trouvé mise à jour les champs qui ont besoin de modification else insert, ici name
et pid
ont des doublons (champs répétitifs).
Les autres sont uniques. Aussi j'ai un champ unique en créant la table Serial no
. Comment dois-je continuer? Je n'ai fait qu'une insertion dans ce code. Je ne sais pas comment stocker l'enregistrement récupéré dans un tableau en utilisant Perl. Guidez-moi s'il-vous-plaît.
for my $test11 (sort keys %seen) {
my $test1 = $seen{$test11}{'name'};
my $test2 = $seen{$test11}{'pid'};
my $test3 = $seen{$test11}{'type'};
my $test4 = $seen{$test11}{'time1'};
print "$test11\t$test1$test2$test3$test4\n";
$db_handle = &getdb_handle;
$sth = $dbh->prepare("Select username,pid,sno from svn_log1");
$sth->execute() or die "SQL Error: $DBI::errstr\n";
my $ref = $sth->fetchall_arrayref();
print "hai";
print "****$ref";
$sth = $dbh->prepare("INSERT INTO svn_log1 values('$sno','$test11','$test1','$test4','$test2','$test3')");
$sth->execute() or die "SQL Error: $DBI::errstr\n";
}
Je suis désolé, vous devez être plus clair ce que vous demandez. Votre exemple de code semble faire une boucle sur tous les enregistrements dans% seen, et pour _each record_ obtenir la table entière à partir de la base de données, puis ajouter un autre enregistrement. Cela n'a aucun sens pour moi. Je comprends que vous voulez attraper des doublons et faire quelque chose de différent avec eux, ce qui est mieux fait par un autre hachage ont les valeurs éventuellement dupliquées comme clé; mais je ne vois pas assez clairement ce que vous voulez faire pour vous donner une réponse. –
$ db_hanlde == $ dbh? – vol7ron
Voir aussi les questions précédentes http://stackoverflow.com/questions/3341145 et http://stackoverflow.com/questions/3334644 – daxim