|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité de passage
![]() Inscription : septembre 2005 Messages : 33 ![]() |
Bonjour,
J'ai un petit problème concernant l'insertion les lignes "séquencées" avec SQL Loader. Exemple : - un fichier de données avec des enregistrements de type Citation:
Code :
Problème : dans ce cas, SQL Loader traite le fichier de données entièrement pour les insertions dans T1, puis entièrement pour les insertions dans T2. Je perds donc la "séquentialité" des enregistrements dans le fichier. Comment peut-on traiter un fichier de données lignes par lignes? Merci. |
|||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
sachant qu'un table n'a pas d'ordre déterminé (à moins d'être une IOT) je ne comprends pas bien l'intérêt
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : septembre 2005 Messages : 33 ![]() |
Imaginons que les lignes "01" soit des entête de commandes, et les lignes "02" des lignes de commandes dépendantes des le ligne "01" précédente.
Je n'ai pas d'identifiant d'entête de commande dans mes lignes de commande, juste la séquentialité du fichier. On peut imaginer gérer les numéros de séquence par trigger. Seulement dans ce cas, les lignes d'entêtes sont toutes traitées d'abord, les lignes toutes traitées ensuite. Le fichier n'est pas lu ligne par ligne... Utiliser une séquence "externe" n'est pas possible. |
|
|
00
|
|
|
#4 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
En utilisant une séquence lors de l'insertion, alors tu peux garder la séquentialité du fichier (si on peux parler de séquence dans un fichier plat
|
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : septembre 2005 Messages : 33 ![]() |
Citation:
Dans mon exemple (premier post), si j'utilise une séquence pour mes lignes "01", avant de traiter ma première ligne "02", la séquence a déjà été incrémentée 3 fois... |
|
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
désolé mais là tu vas pas pouvoir t'en sortir. Il faut inclure l'entête dans les lignes.
|
|
|
00
|
|
|
#7 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Une solution :
Utilise une table temporaire... Lors de l'import tu insert un numéro de séquence, donc logiquement tu doit avoir le même ordre de tes enregistrements que dans le fichier. Et après tu dispatche tes enregistrements dans tes tables T1 et T2 en ajoutant les données qui permettent de faire le lien. |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : septembre 2005 Messages : 33 ![]() |
Pour être plus explicite, imaginons un fichier tel que :
01 001 02 001 001 02 001 002 01 002 02 002 001 02 002 002 02 002 003 01 003 02 003 001 Les lignes commançant par "01" sont des entêtes de commandes, le nombre suivant correspondant à un numéro de commande. (Ex : 1ère ligne = commande "001"). Les lignes commançant par "02" sont des lignes de commandes, les nombres suivant correspondant au numéro de commande et au numéro de ligne de commande. (Ex : 2ème ligne = première ligne de commande de la commande "001"). Ce fichier, c'est l'idéal. Mais je ne l'ai pas. Je n'ai qu'un fichier avec les types de lignes, cad "01" et "02". On ne peut savoir qu'une ligne de commande appartient à une commande que par l'ordre des lignes dans le fichier. SQL Loader traite d'abord toutes les lignes "01" du fichier, puis toutes les lignes "02". Je perd donc la séquentialité de mon fichier. Y'a-t-il un moyen de pouvoir traiter un fichier de données ligne par ligne? Merci. |
|
|
00
|
|
|
#9 | |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : septembre 2005 Messages : 33 ![]() |
Si, mais on a écrit en même temps.
Merci. |
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Il y a moyen sans table temporaire en utilisant des triggers et des sequences et un peu d'astuce....
Vous pouvez voir ce qui a déjà été dit dans la (longue) discussion http://www.developpez.net/forums/sho...d.php?t=263951 |
|
|
00
|
|
|
#12 | ||
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Citation:
Citation:
c'etait un de mes premiers post alors j'etait pas très précise dans mes réponses (ça s'est peu être pas amélioré après tout). Pour en revenir à notre sujet, HomoErectus tu as toutes les solutions possibles, à toi de voir ! |
||
|
|
00
|
|
|
#13 |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Non, non pas de moquerie. Au contraire, on avait exploré pas mal de solution et c'est ce qui est intéressant
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com