|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 31 ![]() |
Bonjour,
Je cherche à créer une table à partir d'un fichier texte. Je souhaiterais utiliser une requête du style : Code :
Je ne cherche peut-être pas au bon endroit. Le fichier source qui contient les données à insérer dans ma table contient 950000 lignes et est structuré comme ceci : - une première donnée sur 13 caractères - et une deuxième sur 10 caractères. Il ressemble à ce qui suit : Citation:
Bonne journée. Cdlt, Olivier CHRETIEN |
|||
|
|
00
|
|
|
#2 |
![]() ![]() |
Vous ne pouvez pas le faire exactement comme vous l'entendez, mais si vous êtes en 10g+ vous pouvez utiliser une table externe.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Les tables externes sont arrivées avec Oracle 9 et oui utilisez une table externe pour ça.
|
|
|
00
|
|
|
#4 | |||
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 31 ![]() |
OK merci.
Je suis en train de regarder dans cette direction et j'ai réalisé un script qui tourne mais à la suite duquel il est impossible de consulter les enregistrements de la table (qui a bien été créée). Voici mon script : Code :
Citation:
Je n'y comprends pas grand chose. Merci pour votre aide. Cdlt, Olivier CHRETIEN |
|||
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Le fichier est test.txt dans le sous-répertoire c:\temp
Faite attention à la casse dans le nom du directory (TMP) et en fonction du système d'exploitation, au nom du fichier. Code :
|
||
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 31 ![]() |
Merci Mnitu.
Je vais modifier mon script. Cependant, j'ai deux questions: - à quoi sert la directory TMP ? - et dans le cas d'un script appelé par un programme, où dois-je mettre le fichier 'test.txt' ? Dans mon cas, je l'ai mis à la même racine que le script PL/SQL qui l'appelle. Est-ce correct ? Cldt, Olivier CHRETIEN |
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Un directory est un nom logique dans la base des données pour un sous-répertoire physique du système d’exploitation. TMP indique où Oracle va chercher le fichier. Le fichier devrait se trouver dans ce répertoire et Oracle doit disposer des droits appropriés pour y accéder.
Normalement le script PL/SQL devrait se trouves dans un répertoire de type script ou sql, etc. et votre fichier test.txt dans un répertoire de stockage des fichiers à traiter : temp ou interface ou trv ? etc. |
|
|
00
|
|
|
#8 | |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 31 ![]() |
Bonjour,
Merci pour les réponses. Je suis en train de tester. Par contre, est-ce que la partie 'FIELDS terminated BY ','' est indispensable ? Peut-on se passer du séparateur de champ ? Dans mon cas, le fichier d'entrée fait plus de 950000 lignes, et ça ferait gagner du temps si on n'avait pas à formater ce fichier avec un séparateur de champ. Format du fichier d'entrée : Citation:
Cdlt, Olivier CHRETIEN |
|
|
|
00
|
|
|
#9 | ||
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 31 ![]() |
Bonjour,
Merci pour vos aides et conseils : ça fonctionne. J'ai une dernière question avant de passer cette discussion en "résolue". La seule contrainte qu'il me reste à gérer c'est le formatage du fichier de données en entrée. Je n'ai pas eu de réponse sur la nécessité ou non du séparateur de champ, alors je voudrais savoir quel moyen assez rapide permettrait de convertir le fichier suivant : Citation:
Citation:
J'ai essayé avec l'éditeur de texte PSPad avec des expressions régulières, mais l'éditeur plante. Merci pour votre aide. Cdlt, Olivier CHRETIEN |
||
|
|
00
|
|
|
#10 |
![]() ![]() |
Ne modifiez pas votre fichier en entrée, s'il n'a pas de séparateur c'est donc un fichier à longueur fixe.
Je n'ai pas d'Oracle sous la main mais soit en définissant précisément vos colonnes soit avec un substr vous devriez vous en sortir.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#11 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Ne chagez pas le fichier changez la table
Code :
|
||
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 31 ![]() |
Super, c'est exactement ce que je voulais faire.
Merci beaucoup. Cdlt, Olivier CHRETIEN |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com