Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

DBI:Xbase lecture séquentielle sature la mémoire de Windows

1 réponse
Avatar
Jean LORRAIN
Bonjour

Une base Dbase de 600.000 enregistrements.
Au bout de quelques minutes, Windows est saturé.
Il semble que la base se charge en mémoire dans sa totalité alors que je veux juste lire la base séquentiellement pour
traiter certains enregistrements.

Ce sont mes débuts avec les bases de données, l'application tournait jusque là avec des fichiers séquentiels.

J'ai testé avec 50 enregistrements, ça marche.

Je ne dois pas m'y prendre de la meilleure façon.

Merci aux spécialistes de bien vouloir m'éclairer.

use DBI;
$dbased = "../data";
$dbh = DBI->connect("DBI:XBase:$dbased");
$sqlist = "SELECT cle, nom, prenom, refer FROM couples order by cle";
$sth = $dbh->prepare($sqlist);
$sth->execute();
while (@tcouples = $sth->fetchrow_array)
{($cle, $nom, $prenom, $refer) = @tcouples;
splog ($cle, $nom, $prenom, $refer);
}
$dbh->disconnect;


Cordialement.

Jean LORRAIN jean.lorrain.free.fr et j.lorrain.free.fr - relevés en 54, 70 et 39

1 réponse

Avatar
Patrick Texier
Le Thu, 23 Feb 2006 19:06:54 +0100, Jean LORRAIN
a écrit :

Une base Dbase de 600.000 enregistrements.
Au bout de quelques minutes, Windows est saturé.
Il semble que la base se charge en mémoire dans sa totalité
alors que je veux juste lire la base séquentiellement pour
traiter certains enregistrements.


Je viens de le charger pour voir avec ppm sous Windows.

DBI::Xbase ne semble être qu'une interface SQL extrèmement limitée (pas
d'utilisation des index !, pas de jointures !!! syntaxe SQL reconnue
squeletique...) au module Xbase.

Utilisez directement le module Xbase. Le synopsis doit répondre à peu
près à votre demande en l'adaptant ainsi (il est inutile de passer la
liste des champs si on les prend tous) :

use XBase;
my $table = new XBase "dbase.dbf" or die XBase->errstr;
for (0 .. $table->last_record) {
my ($deleted, $cle, $nom, $prenom, $refer)
= $table->get_record($_, "CLE", "NOM", "PRENOM", "REFER");
splog ($cle, $nom, $prenom, $refer) unless $deleted;
}
--
Patrick Texier

Base de données libre de résultats de GP F1
<http://www.genindre.org/cgi-bin/f1menu.cgi&gt;