|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 8 ![]() |
Bonjour tout le monde,
J'ai une question en espérant qu'elle n'a pas été postée auquel cas je suis en train de créer un doublon et je vous demanderais de m'excuser d'avance. Droit au but : Je charge un fichier dans une table Oracle via sqlldr Ma question : Que se passe t'il si le nombre de champ de l'une des lignes du fichier est supérieur au nombre de champs de la table de destination ? Je n'ai pas de moyens techniques pour tenter l'expérience, pouvez-vous le faire pour moi ? Avec un fichier contenant des valeurs séparée par un ";" Chaque ligne doit se terminer par un ";" Qu'importe le contenu des champs : number, char, date.... Merci pour votre aide. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 8 ![]() |
euuuuuh
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Si vous avez un PC sous Windows ou Linux, vous pouvez installer Oracle XE et utiliser SQL*Loader.
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 8 ![]() |
Ok merci, mais en fait j'aurais souhaité dans une urgence relative le faire faire par quelqu'un qui aurait déja le matos...
En fait mon but étant de savoir s'il y aura un rejet des lignes dont le nombre de champs est supérieur au nombre de champ de la table. la ligne contiendrait 3 champs et la table 2 champs ! Voilà si c'est possible que quelqu'un me fasse la manip ça serait super sympa. Merci pour l'information concernant Oracle XE |
|
|
00
|
|
|
#6 | ||
![]() ![]() vincent rogier Inscription : juillet 2007 Messages : 2 355 ![]() |
Je viens de tester et cela ne pose pas de probleme si le fichier control est bien configuré.
Exemple Code :
__________________
Vincent Rogier. Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique ! OCILIB (C Driver for Oracle) Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle |
||
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 8 ![]() |
Merci Vicenzo (j'adore ce prénom!)
cela voudrait dire que le 4ème champ est tronqué !? Pourquoi ne génère t'il pas de message d'erreur ? pas de contrôle du nombrede champs, ça me parait vraiment bizarre !!! comment peut-on alors effectuer un contrôle du nombre de champs entre le ligne du fichier et la table ? Merci. |
|
|
00
|
|
|
#8 | ||
![]() ![]() vincent rogier Inscription : juillet 2007 Messages : 2 355 ![]() |
Si tu regardes le data.ctl, j'ai spécifie expressement les champs (3) à importer. Donc, les données surnuméraires ne sont pas gérées car superflues..
Je n'y vois rien de choquant ! si le fichier de contrôle spécifie X champs, la seule erreur doit être si le nombre de champs du fichier est < à X. Pour preuve, voici le log de l'import (data.log) : Code :
__________________
Vincent Rogier. Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique ! OCILIB (C Driver for Oracle) Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle |
||
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 8 ![]() |
Bonjour,
Ok je vois plus clair maintenant ! je donne plus de détails sur pourquoi j'ai posé cette question. J'effectue des tests de chargement de fichiers. Les fichiers sont émis depuis un système pour être chargé dans un autre système via sqlldr dans des tables oracle. Les développeurs du 2ème système me garantissent un rejet du fichier si la structure est érronée. Ce qui est le ca quand le nombre de champs d'une des lignes du fichier est supérieur au nombre de champs de la table de destination. Donc quand j'effectue le test, (sachant que je n'ai pas accés au système que via une interface), j'observe que les fichiers sont traitées et chargées normalement sauf les valeurs en plus. Et lorsque j'ai demandé la raion, on m'a dit que le sqlldr a atteint ses limites et qu'il effectuait un truncate des champs en plus ! Ce qui n'est pas le cas, puisque (d'après ton explication), il charge le nombre de champs qu'on lui a demandé de charger et quand c'est fait, il passe à la ligne suivante. Ma dernière question : Comment peut on pousser le process à effectuer une comparaison de la structure des lignes avec celle de la table avant d'effectuer le charge ent ? Est-ce possible avec le sqlldr ? sinon avec quoi ? Merci par avance. |
|
|
00
|
|
|
#10 |
![]() ![]() vincent rogier Inscription : juillet 2007 Messages : 2 355 ![]() |
Je suis pas un utilisateur régulier de sqlldr !
Tu peux rechercher dans la doc de sqlldr et sur les paramètres du fichier de contrôle...
__________________
Vincent Rogier. Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique ! OCILIB (C Driver for Oracle) Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle |
|
00
|
Copyright © 2000-2012 - www.developpez.com