Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 24-06-2011 22:34:38

elfeliz  
Bienfaiteur du site
Award: bf
Lieu: Liège, BE
Date d'inscription: 23-06-2009
Messages: 94
Pépites: 471
Banque: 0

importfile d'un fichier txt suivi d'un update

Bonjour à toutes et tous !

Je vous soumet une petite question ... que je vais sans doute trouver idiote dès que vous aurez expliqué mon erreur :-)))

C'est un importfile d'un fichier texte avec séparateur tabulation.
Je récupère les lignes dans une datastore.
Mon fichier d'origine a une seule 'colone', ma datastore aussi.

Code: pb

 
ma_datastore.importfile(mon_fichier.txt)

Je prévois ensuite de remonter le tout dans une db oracle 10g, sur une table à une colone.
Cette table est d'ailleurs indiquée comme datasource de ma datastore... donc je me satisfait d'un update barbare...

Code: pb

 
ma_datastore.update()

Cela semble se passer très bien sauf que quand je répète l'opération, je constate que les lignes n'arrivent pas chaque fois dans le même ordre sur la db   

Une idée ?
Sachant que la datastore est détruite entre chaque appel, qu'on fait l'importfile sans problème : une petite boucle sur les lignes avant l'update me permet de voir qu'elle sont dans la datastore dans le bon ordre, càd dans l'ordre de lecture dans le fichier d'origine.

Mais après l'update, elles remontent en db dans un ordre qui m'échappe...

Toute piste est bienvenue.

MERCI !!

Bybye

Elfeliz


Edit : PB 11.5 et oracle 10g

Dernière modification par elfeliz (24-06-2011 22:36:13)


No prob, just Pb !

Hors ligne

 

#2 26-06-2011 10:33:54

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: importfile d'un fichier txt suivi d'un update

Bonjour Elfeliz,
1) as-tu essayé d'espionner l'event sqlpreview de l'objet transaction pour vérifier l'ordre dans lequel les instructions INSERT sont passé à la base de données ?
2) je ne connais pas (plus ) oracle, mais en ASA par exemple l'ordre dans lequel peuvent revenir les records dans un SELECT sans clause "ORDER BY" n'est pas toujours identique à l'ordre s'insertion dans la base de données.


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#3 27-06-2011 13:12:37

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: importfile d'un fichier txt suivi d'un update

elfeliz a écrit:

Bonjour à toutes et tous !

Je vous soumet une petite question ... que je vais sans doute trouver idiote dès que vous aurez expliqué mon erreur :-)))

C'est un importfile d'un fichier texte avec séparateur tabulation.
Je récupère les lignes dans une datastore.
Mon fichier d'origine a une seule 'colone', ma datastore aussi.

Code: pb

 
ma_datastore.importfile(mon_fichier.txt)

Je prévois ensuite de remonter le tout dans une db oracle 10g, sur une table à une colone.
Cette table est d'ailleurs indiquée comme datasource de ma datastore... donc je me satisfait d'un update barbare...

Code: pb

 
ma_datastore.update()

Cela semble se passer très bien sauf que quand je répète l'opération, je constate que les lignes n'arrivent pas chaque fois dans le même ordre sur la db   

Une idée ?
Sachant que la datastore est détruite entre chaque appel, qu'on fait l'importfile sans problème : une petite boucle sur les lignes avant l'update me permet de voir qu'elle sont dans la datastore dans le bon ordre, càd dans l'ordre de lecture dans le fichier d'origine.

Mais après l'update, elles remontent en db dans un ordre qui m'échappe...

Toute piste est bienvenue.

MERCI !!

Bybye

Elfeliz


Edit : PB 11.5 et oracle 10g

Sans index, l'ordre de lecture en base est "aléatoire" (en fonction des optimisations physiques du moteur de la base de données).
Par défaut sans clause order by spécifique lors du select, c'est le cluster index qui impose l'ordre de lecture au moteur de BDD.
Donc pour moi cela n'a rien a voir avec ta datastore et l'ordre dans lequel tu traites ton fichier. Regardes côté BDD et ajoute un cluster index...


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#4 29-06-2011 07:34:35

elfeliz  
Bienfaiteur du site
Award: bf
Lieu: Liège, BE
Date d'inscription: 23-06-2009
Messages: 94
Pépites: 471
Banque: 0

Re: importfile d'un fichier txt suivi d'un update

Bonjour,

Je pensais aussi à un problème genre absence d'index.
Pressé par le temps, j'ai rajouté une colonne avec un identifiant numérique (numéro de ligne) + modifier mes traitements postérieurs pour utiliser un order by.

Je laisse le sujet ouvert car je vais re-tester quand j'aurai 5 min, en appliquant vos conseils et donnerai un retour...

Merci à vous !

Bybye,

El Feliz


No prob, just Pb !

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22