Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2008, 09h54   #1
Membre du Club
 
Avatar de gege87270
 
Inscription : mai 2007
Messages : 224
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : mai 2007
Messages : 224
Points : 45
Points : 45
Par défaut Extraction de ligne dans la table

Bonjour,

J'ai suivi le guide PL/SQL avec l'utilisation du paquetage UTL_FILE, j'ai réussi à suivre le guide, mais quand j'arrive à l'étape extraire les ligne de la table dans le fichier .TXT, j'ai un code erreur en retour.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL*Plus: Release 10.2.0.1.0 - Production ON Jeu. Janv. 24 09:39:05 2008
Copyright (c) 1982, 2005, Oracle.  ALL rights reserved.
 
ConnectÚ Ó :
Oracle DATABASE 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
WITH the Partitioning, OLAP AND DATA Mining options
SQL> execute extraction_table('pays','pays.txt','/tmp/bsa/');
BEGIN extraction_table('pays','pays.txt','/tmp/bsa/'); END;
*
ERREUR Ó la ligne 1 :
ORA-20070: /tmp/bsa/pays.txt : File location IS invalid.
ORA-06512: Ó "BERNARD.EXTRACTION_TABLE", ligne 71
ORA-06512: Ó "BERNARD.EXTRACTION_TABLE", ligne 128
ORA-06512: Ó ligne 1
Je remplace les paramêtres en exemple par les miens. J'ai même essayé avec Fichiers_Out à la place de '/tmp/bsa/', avec le même résultat.

Je ne comprend pas les codes erreur. Auriez vous la gentillesse de m'aider un peu.

Merci d'avance
gege87270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 10h08   #2
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Bonjour,

Pour info le lien dont tu parles :
http://sheikyerbouti.developpez.com/pl_sql/?page=Chap8

Est ce que l'erreur est la même lorsque tu te sert du directory Fichiers_Out est la même ?
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 10h16   #3
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 483
Points : 1 483
Tu as bien déclaré /tmp/bsa/ comme DIRECTORY dans la base ?
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 10h32   #4
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Il ne faut pas passer un chemin mais un directory oracle (create directory ...).
De plus le directory doit être passé en majuscules.
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 11h01   #5
Membre du Club
 
Avatar de gege87270
 
Inscription : mai 2007
Messages : 224
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : mai 2007
Messages : 224
Points : 45
Points : 45
J'ai bien déclaré la directory dans la base oracle (10g) par
Code :
1
2
CREATE DIRECTORY FICHIER_OUT AS '/tmp/bsa');
GRANT READ DIRECTORY FICHIERS_OUT TO PUBLIC;
Avec l'utilisateur system

Même en utilisant FICHIERS_OUT, j'ai la même erreur mis à part le numéro de ligne pour BERNARD.EXTRACTION_TABLE",

Code :
1
2
3
4
5
6
7
8
SQL> execute extraction_table('pays','pays.txt','FICHIERS_OUT');
BEGIN extraction_table('pays','pays.txt','FICHIERS_OUT');
 END;
*ERREUR Ó la ligne 1 :ORA-20070: FICHIERS_OUTpays.txt : 
File could NOT be opened OR operated ON asrequested.
ORA-06512: Ó "BERNARD.EXTRACTION_TABLE", ligne 80
ORA-06512: Ó "BERNARD.EXTRACTION_TABLE", ligne 128
ORA-06512: Ó ligne 1
gege87270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 11h25   #6
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Est ce que tu arrives à ouvrir le fichier en utilisant le directory.
En faisant par exemple :
Code :
UTL_FILE.FOPEN('FICHIER_OUT','pays.txt','w');
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 13h39   #7
Membre du Club
 
Avatar de gege87270
 
Inscription : mai 2007
Messages : 224
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : mai 2007
Messages : 224
Points : 45
Points : 45
Je vais essayer de reprendre depuis le début, car même avec vos propositions ça ne fonctionne pas. J'ai peut être manqué quelque chose
gege87270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 13h43   #8
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Je te conseillerai de faire un test simple :
- creer le directory oracle
- donner les droits à ton user sur ce directory
- faire un test de création de fichier très simplement sur sqlplus par exemple :
Code :
1
2
3
4
5
6
7
SQL> declare
  2   fichier utl_file.file_type;
  3   begin
  4   fichier := utl_file.fopen('NOM_DU_DIRECTORY','test.txt','w');
  5  utl_file.fclose_all;
  6  end;
  7  /
Si ça ça passe pas, il y a peut être un probleme de droits au niveau physique, mais là c'est plus de mon ressort
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 15h43   #9
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
c'est quoi la valeur du paramètre utl_file_dir
Code :
1
2
3
 
sqlplus (... AS dba)
SHOW parameter utl_file_dir
Si ton chemin n'est pas la alors ...
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 15h55   #10
Membre du Club
 
Avatar de gege87270
 
Inscription : mai 2007
Messages : 224
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : mai 2007
Messages : 224
Points : 45
Points : 45
Il n'y a rien dans utl_file_dir
gege87270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h14   #11
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
En 10g tu n'as pas besoin du paramètre utl_file_dir. Il vaut mieux passer par des directories.

As-tu fait le test proposé par kalyparker ? Quel est le résultat.
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h30   #12
Membre du Club
 
Avatar de gege87270
 
Inscription : mai 2007
Messages : 224
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : mai 2007
Messages : 224
Points : 45
Points : 45
J'ai fait le test et voici ce que j'obtiens:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SQL> declare
  2  fichier utl_file.file_type;
  3  beginfichier := utl_file.fopen('FICHIERS_OUT','test.txt','w');
  4  utl_file.fclose_all;
  5  end;
  6  /
beginfichier := utl_file.fopen('FICHIERS_OUT','test.txt','w');
             *
ERREUR Ó la ligne 3 :
ORA-06550: Ligne 3, colonne 14 :
PLS-00103: Symbole "=" rencontrÚ Ó la place d'un des symboles suivants :
constant exception <identificateur>
<identificateur entre guillemets> table LONG_ double ref char
time timestamp interval date binary national character nchar
Symbole "<identificateur>" a ÚtÚ substituÚ Ó "=" pour continuer.
ORA-06550: Ligne 4, colonne 9 :
PLS-00103: Symbole "." rencontrÚ Ó la place d'un des symboles suivants :
constant exception <identificateur>
<identificateur entre guillemets> TABLE LONG_ double ref char
time timestamp interval date BINARY national character nch
gege87270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h42   #13
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Attention,

J'ai l'impression que tu as collé le begin et fichier
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h42   #14
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Citation:
Envoyé par plaineR Voir le message
En 10g tu n'as pas besoin du paramètre utl_file_dir. Il vaut mieux passer par des directories.

...
C'est vrai ! Mais, la doc. dit que il faut s'assurer que les procès Oracle ont les droits de lecture/écriture.
Citation:
...
Your system or database administrator must ensure that the operating system directory has the correct read and write permissions for Oracle Database processes.
...
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h46   #15
Membre du Club
 
Avatar de gege87270
 
Inscription : mai 2007
Messages : 224
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : mai 2007
Messages : 224
Points : 45
Points : 45
J'ai refait le test sans coller begin et fichier (erreur de saisie)

et voilà ce que j'obtiens

Code :
1
2
3
4
5
6
7
SQL> declare
  2  fichier utl_file.file_type;
  3  begin
  4  fichier := utl_file.fopen('FICHIERS_OUT','test.txt','w');
  5  utl_file.fclose_all;
  6  end;
  7  /
Citation:
declare
*
ERREUR Ó la ligne 1 :
ORA-29283: opÚration non valide sur le fichier
ORA-06512: Ó "SYS.UTL_FILE", ligne 475
ORA-29283: opÚration non valide sur le fichier
ORA-06512: Ó ligne 4
gege87270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h48   #16
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
tu dois utiliser les DIRECTORY, cf le forum et les 10aines d'exemples
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h56   #17
Membre du Club
 
Avatar de gege87270
 
Inscription : mai 2007
Messages : 224
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : mai 2007
Messages : 224
Points : 45
Points : 45
Bon j'ai repris un peu mes codes, et j'ai réussi à m'en sortir. Comment je sais pas vraiment !!!!

Je creuse un peu plus et je vous tiens au courant.

Merci encore pour votre aide
gege87270 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h57   #18
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
probablement que clore un fichier alors que tu n'as pas lu au moins une ligne pose problème
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 17h02   #19
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Citation:
Envoyé par orafrance Voir le message
probablement que clore un fichier alors que tu n'as pas lu au moins une ligne pose problème
Tu n'aimes pas mon code ?

Vous l'aurez compris, le but de ce petit test etait de voir si oracle avait acces au repertoire et si il avait les droits de lecture et d'ecriture grâce au DIRECTORY oracle.
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 17h06   #20
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Citation:
Envoyé par mnitu Voir le message
C'est vrai ! Mais, la doc. dit que il faut s'assurer que les procès Oracle ont les droits de lecture/écriture.
Cela signifie que l'utilisateur propriétaire des binaires oracle doit avoir le droit de lire/écriredans la répertoire.
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h57.


 
 
 
 
Partenaires

Hébergement Web