Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
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.
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...
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)
Hors ligne
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.
Hors ligne
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...
Hors ligne
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
Hors ligne