|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : avril 2007 Messages : 28 ![]() |
Bonjour à tous,
Voilà. J'aimerai importer des fichiers csv sous Oracle 9i qui a déjà une base de données. J'ai bien compris que je devais utiliser sqlldr, je l'ai bien sous ma machine (Oracle 9i avec Linux RHEL 3) mais j'aurai plusieurs questions (dont je n'ai pas trouvé les réponses dans les tutoriels) : 1°) Est-ce qu'il faut que la table que je veux importer existe déjà sous la base ? 2°) Est-il obligatoire que le nom des colonnes n'apparaissent pas dans le fichier texte ? 3°) L'option skip compte le nombre de lignes je suppose ? Merci par avance de vos réponses |
|
|
00
|
|
|
#2 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Bonjour,
Dans l'ordre : 1. Oui 2. Si le nom de la colonne apparait au debut de ton fichier, tu peux "sauter" cette ligne. 3. skip sert justement à sauter cette ligne voili, voilou |
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : avril 2007 Messages : 28 ![]() |
Merci pour cette réponse rapide
Bon, donc la table doit exister, ce problème ne sera pas insurmontable. Pour ce qui est de skip, j'aurai souhaité qu'il en saute plusieurs... et je pense que j'aurai aussi besoin de l'option 'load'. Parce que voici un exemple de fichier : Code :
Mais est-ce que je pourrai ajouter l'option load après, de telle sorte qu'il ne garde que les enregistrements et pas la dernière ligne (qui n'est pas un enregistrement) ? A moins que je trouve l'option dans mdb-sql de MDBTools pour empêcher l'impression de la dernière ligne... à étudier. |
||
|
|
00
|
|
|
#4 | |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Citation:
Pour ce qui est de skip : Si tu as 3 lignes à sauter, alors il suffit de mettre skip=3 lors de l'appel à sqlldr Pour ce qui est de load : Cette option permet de dire combien de ligne tu as à charger, donc si tu connais le nb d'enregistrement ça peux marcher (load=50 pour 50 enregistrement). (sqlldr ne compte pas les lignes que tu sautes avec skip) Il n'existe pas (à ma connaissance) une option qui te permet de ne pas prendre en compte la dernière ligne. Par contre tu peux peux être supprimer cette ligne avec un petit shell unix ! voili, voilou |
|
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : avril 2007 Messages : 28 ![]() |
Ce n'est pas bien grave si la réponse a été un peu moins rapide, j'ai déjà une réponse
Bien alors il faudra que je mette en forme mon fichier avant de faire l'import dans la base Oracle. Merci bien, grâce à toi j'ai pu avancer dans mon problème (et c'est pas rien d'arriver à me faire avancer... le problème de base étant lire une base Access sous Linux de manière automatique puisque devant pouvoir être executé durant un programme). Juste une dernière petite quesion : si mon fichier commence par des lignes vides, il faut que je les saute aussi ? |
|
|
00
|
|
|
#6 | |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Citation:
voili, voilou |
|
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : avril 2007 Messages : 28 ![]() |
Merci
J'ai donc résolu mon problème Pour résumer : Le problème : utiliser sqlldr avec un fichier en csv contenant le nom des colonnes en début de fichier, et le nombres d'enregistrements en fin de fichier. La solution : Utiliser la commande "grep -v" pour enlever les lignes superflues, puis utiliser sqlldr avec l'option skip=2 (nombre de lignes vides en début de fichier). Contrainte : La table que l'on veut importer doit être existante |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : décembre 2005 Messages : 76 ![]() |
je ne comprend pas, tu as utilisé sqlldr sans utilisé un fichier de control
|
|
|
00
|
|
|
#9 | ||
|
Invité régulier
![]() Inscription : avril 2007 Messages : 28 ![]() |
Bien sûr que si, j'ai utilisé un fichier de controle.
Je voulais juste préciser deux-trois points techniques sur la commande sqlldr. Notamment parce que mes fichiers à importer ressemblaient à ça à la base : Code :
Grâce à la ligne suivante, j'importe la table (créée auparavant) : sqlldr login/pass control=control_file.ctl skip=2. Tu trouveras mon fichier de contrôle sur le forum à cette adresse : http://www.developpez.net/forums/sho...d.php?t=356082 Si t'as des questions, hésites pas, je ferai au mieux pour y répondre. |
||
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : décembre 2005 Messages : 76 ![]() |
Ok j'ai compris.
Merci beaucoup. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com